Источник: Дилберт, 8 сентября 1992 г.
Я надеюсь добавить новый поворот в классическом "Hello World!" программа.
Код программы, которая выводит Hello World!
без:
- Строковые / символьные литералы
- Числа (любая база)
- Предварительно встроенные функции, которые возвращают "Hello World!"
- Регулярные литералы
За исключением «O» † и 0.
† «O» пишется с заглавной буквы, «o» не допускается.
"O"*
означает, что они могут иметь строковый литерал с любым числом О, включая ноль. Я не думаю, что это было намерение. Просьба уточнить.Ответы:
Windows PowerShell, слишком много
Да, действительно, в то время мы должны были написать «Hello world», используя (почти исключительно) нули ...
На более серьезной ноте:
Windows PowerShell, 25
Нет строкового литерала.
Hello World!
Там как раз случается быть проанализирован как строка , поскольку PowerShell находится в режиме разбора аргументов там.источник
C 327 символов
Как ни странно, он не теряет своей красоты после предварительной обработки:
источник
BrainFuck, 102
111персонажейСоответствует всем правилам.
Кредит идет к Даниэлю Кристофани .
источник
0 and/or "O" must be used
. Это немного неважно для BrainFuck и golfscript, но им точно не трудно справиться с этой задачей.C 182 байта
источник
C программа - 45
(мошенничество)
Лексически это не использует строковые литералы или литералы регулярных выражений. Он использует функцию строкового преобразования препроцессора Си.
s(x)
макрос, который превращает свой аргумент в строкуисточник
Хаскель - 143 персонажа
ой, это было неопрятно!
Нет чисел, нет числовых операций, переменные переименованы для развлечения.
Некоторая экспозиция может быть хорошей:
o%y
,o&y
Иo!y
каждый применяет функциюo
кy
многократно: 3, 9, и 29 раз соответственно. 29?!?! Да, 29!r
иw
являются следующим и предыдущим символом, который при применении с использованием вышеупомянутых функций высшего порядка может быть сделан для получения всех необходимых символов'O'
.Необходимая последовательность прыжков:
$
, переименованный#
в!
течение Hugs.источник
r=succ
иw=pred
несоответствие того, как Хагс реализует ограничение мономорфизма. Меняетсяr x=succ x
иw x=pred x
заставляет его работать (по стоимости 4 символа). Кажется, это проблемы в объятиях.Unary ,
10 1971137672766964589547169964037018563746793726105983919528073581559828 байтЯ удивлен, что никто еще не сделал это ...
Это слишком долго, чтобы публиковать здесь, но это 1137672766964589547169964037018563746793726105983919528073581559828 нулей.
Или, более легко читать: ~ 10 67 нулей.
Спасибо @dzaima за сохранение 10 197 байт
источник
Mathematica 12 символов
Только символы, без строк.
! является факториальным оператором, но, поскольку символы Hello и World не определены, возвращает входные данные без изменений.
Если мы немного изменим программу:
Затем он печатает
12
(2 * 3!)источник
сборка i386 (Linux, синтаксис gcc),
440442435Сегодня мой день собрания, и после этого мне будет достаточно на некоторое время.
Я позволил себе номер 128, см. Ниже программу для обсуждения почему.Ничего необычного: я просто кодирую "Hello World!" в качестве кодов сборки, где это имеет смысл без числовых констант, а остальные заполняются арифметикой.(собрать с
gcc -nostartfiles hello.S -o hello
, возможно, в-m32
зависимости от вашей арки)Почему допуск на 128? Мне нужны системные вызовы, чтобы показать что-нибудь; Системные вызовы Linux находятся на INT 80h (128 десятичных); единственный формат операнда для INT является немедленным, поэтому невозможно иметь что-либо кроме константы (к коду). Я мог (после того, как стал трезвым) пытаться выразить это как функцию других символических констант в коде, вероятно, n , но это становится очень скучным из-за небольшого выигрыша. Я прочитал ограничение на числа как способ предотвращения кодирования ASCII, и это определенно не то, что я делаю здесь, поэтому я чувствую себя достаточно невинным, чтобы представить это. (FWIW, я также попробовал самоизменяющийся код, но он был поврежден)Теперь также не осталось и 128. Код чистый!mov
макросами CPP; устранены оставшиеся 128.источник
Javascript - 305
Немного долго, но мне нравится используемый метод.
источник
OO
,OOO
, но, конечно же, что бы сделать его больше.C # (131 символ)
141 символ142 символаУдобочитаемый:
источник
enum X{Hello,World,A,B=A<<A<<A}void Main(){var c=(char)X.B;(X.Hello.ToString()+c+++X.World+c).Dump();}
.ToString()
->+""
Сохраняет некоторые кадрыJavaScript, 88
99
Большое спасибо @Timwi за предложения
удален троичный оператор:
103
псевдоним
String.fromCharCode
117
Переключен if-else на троичный оператор
125
Я придерживаюсь
"O"
только того, чтобы иметь «О» в программе.133
источник
GolfScript, 63 символа
Что, еще нет записи GolfScript?
Этот использует один числовой литерал
0
и переменную с именемO
(которая используется для хранения числа3
). Все остальное - арифметика и манипуляции со стеком. СтрокаHello World!
построена из своих кодов ASCII, символ за символом.Вот как это работает:
источник
Brainfuck, 111 байт
Алгоритм объяснил
Более длинная версия без цикла, 389 байт:
источник
Lua
1449786 символовДругой подход, основанный на том факте, что ключи таблиц также являются строками, и на том факте, что #Hello == #World == 32 == string.byte '\ n'
Решение 145 символов
Сделал дельта-кодирование байтов, затем некоторые простые числа и т. Д. И т. Д. :)
Гольф версия:
комментарии:
Изменить: изменил несколько O-строк, и нашел еще несколько оптимизаций.
источник
Питон (
126130)источник
''
не допускается.[:0]
.J, 250
Мне было слишком весело с этим, и я научился немного больше J, чтобы загрузить. Кроме того,
ooo ooo ooo
возможно, это самый глупый код, который я когда-либо писал.источник
QR с полублоками
(169)121 символС QR-кодом с использованием символов UTF-8 Half-block:
К сожалению, это не будет хорошо выглядеть там. Есть небольшой фрагмент с соответствующей таблицей стилей, но .. Нет! Язык, представленный здесь, не является HTML! Язык, представленный здесь, является QR-кодом ! (HTML и CSS используются здесь только для устранения ошибки презентации!)
Показать фрагмент кода
QR с полублоками (169)
В идеале это может выглядеть так:
источник
zbar
под Linux. (пример:xwd | xwdtopnm | zbarimg /dev/stdin
)Code golf!
персонаж не является литералом?postscript
,svg
или других языков представления, уже используемых там !? В любом случае, способ кодирования - это язык ... Я думаю!Scala (
357423361 символов)К сожалению, не самый короткий ответ, но в надежде получить бонусные баллы за наибольшее использование
'O'
и'0'
Ранее:
Старая (нелегальная) версия:
источник
""
) и строковые / символьные литералы, содержащие символ ноль ('0'
), не допускаются. Только строка"O"
(заглавная O) и число0
.C (или C ++) (сегмент тела: 49) (обман)
при компиляции, скомпилировать в бинарный файл
Hello\ World\!
, код выглядит так:strrchr
Сегмент требуется удалить полный путь в случае название программы прошла в содержит полный путь, и никаких доводов не должны быть переданы в ..Типичная строка компиляции может быть:
gcc -o Hello\ World\! foo.c
источник
Java 389 символов
заметил ненужную декларацию
История в истории редактирования, теперь читаемая оригинальная версия без гольфа:
источник
С ++, 141,
146Первый раз, попробовав один из них, возможно, можно еще немного улучшить:
РЕДАКТИРОВАТЬ:
Украл уловку из другого поста, не могу поверить, что я об этом не подумал :(
источник
std::
и т. Д.Хаскелл - 146
Я полагал, что сопоставление с образцом даст Хаскеллу огромную опору, в частности, потому что вы можете инициализировать полномочия двух следующим образом:
Однако, как видно из ответа MkenViewMark на Haskell (который, кстати, заслуживает многих откровенных голосов) и других ответов, лучшего сжатия можно добиться, используя больше, чем просто
+
и-
.источник
Clojure - 46 символов
Обратите внимание, что
Hello
иWorld!
являются символами, а не литералами любого рода.источник
C ++
источник
100
Нарушает правило о числах. Пожалуйста, замените его чем-нибудь более забавным.Line 7: error: ISO C++ forbids declaration of 'main' with no type
int
на g ++PHP - 49 символов
Журнал изменений :
источник
<?$a=-~-~-~0;echo Hello.chr($a.$a-1).World.chr($a.$a);
работает, но это 54 символа.1
там. Там я нарушаю свои собственные правила ...<?$a=-~-~-~0;echo Hello,chr($a.~-$a),World,chr($a.$a);
это то, что я должен был использовать, все еще 54 символа.Python, 106
источник
Perl, 186 байт
Каждый символ печатается через его порядковый номер, который является длиной массива. Построение массивов оптимизируется через двоичное представление чисел символов.
Ungolfed:
источник
Perl 6 , 199 байт
(новые строки добавляются для уменьшения ширины, но не нужны, поэтому не учитываются)
Hello World!
закодирован как список списков степеней 2 каждой буквы.Есть только одно место, где у меня есть литерал,
0
который используется для чего-то другого, кроме0
. Он используется для создания одноэлементного списка, который сразу превращается в число1
с помощью оператора числового префикса (+[0]
).источник
JavaScript 662 символа
Как насчет злоупотребления литералами массива только для того, чтобы иметь одинарную базу. Эта программа имеет преимущество не использовать
0
.источник
0
. Как насчетO_O=0;
?O_O=[].length
можно записать какO_O=false
уменьшившую его на 4.