Задача:
Создайте запутанную программу, которая печатает Hello World!
(именно так). Возможно, в вашей программе нет строк.
Правила:
- Вы можете использовать любой язык программирования, который вам нравится.
- Сделайте это как можно более запутанным
- Это конкурс популярности , поэтому победит ответ с наибольшим количеством голосов.
Примечание:
Это не дубликат этого вопроса . Тот был code-golf, и у него были другие правила.
:)
/[dehlorw01]/
. Кроме того, длина была оценена. В этом просто не требуется использование строк (и, вероятно, нетchar[][]
, увядать). Длина не считается, но креативность является основным решающим фактором, поэтому тег популярности конкурса .Ответы:
Python 2
Я случайно играл с этим вчера, так что:
Вот более читаемая версия: http://codepad.org/UzSmoxF2
Примечания:
Одна строка, одно выражение (т.е. нет оператора печати).
Нет строк, нет целых; только функции, доступ к атрибутам, списки, кортежи, базовая математика, одна
True
и одна звездочка.Минимальное использование встроенного (
__import__
,getattr
иchr
один раз).Полезная нагрузка может быть легко изменена. Вот программа, которую я написал для ее генерации.
Изменить: я написал довольно существенное объяснение того, как это работает в моем блоге .
источник
JavaScript
Просто запустите это в консоли браузера (например, в Firebug или в Chrome Dev Tools).
источник
С
Мультипликативное приветствие:
источник
PHP
Я перевел это в одно утверждение, которое, я думаю, значительно затрудняет расшифровку. Эта версия использует только 13 уникальных персонажей.
Оригинальная версия
14 уникальных персонажей. Я мог бы создать скрипт для их генерации и переименовать его в «PHPFuck», но я не думаю, что это было бы очень полезно.
Как это устроено
источник
/H/
и/W/
в нем.PHP
Вот простой PHP-скрипт, который выводит
Hello World!
:Нажмите здесь для демонстрации.
источник
;)
Пробелы
Wikipedia: Пробелы (язык программирования)
Онлайн переводчик для проверки ответа
Программа проталкивает коды символов ASCII посредством следующих шагов (взятых из боковой панели отладки интерпретатора):
источник
Bash (под Linux)
Я надеюсь, что ваши сценарии оболочки не выглядят так:
attr
файл является первым файлом/proc/$PID
с 4-символьным именем файлаПосмотри, сможешь ли ты найти скрытое
eval
.источник
${__[${____}]}${__[${__________}]}${__[${_______}]}${__[${___}${____}]} -${__[${____}]}
(echo -e
) и заменяться!
на\\${_________}${____}${___}
\\${_________}$[${______}${____}#${_____[${___________}+${__________}]}]
сделайте восклицательный знак тоже ;-)_________
будет задано значение0
(что будет, еслиsource
вместо сценария выполнить d после ошибки?).:
команду, чтобы очистить все предыдущие ошибки, о которых сообщалось в$?
.GolfScript
Было довольно сложно создать и отладить это. Он не содержит строк, только символы.
Это выводит:
Тест онлайн
объяснение
Как это работает:
[' '(..4/++]
' '(
преобразует пространство в его ASCII - код:32
...
дублирует32
дважды. Теперь у вас есть три раза32
.4/
делит верх32
на 4. Теперь у вас есть два раза32
и один раз8
.++
складывает32
,32
и8
. Вы получаете72
, который является кодом ASCII дляH
.[' '(3*)))))]
' '(
преобразует пространство в32
.3*
умножает32
с3
:96
)))))
увеличивается96
с 5, вы получите101
, что является кодом ASCII дляe
.[6`(2*.]
6`(
дает ASCII-код символа6
:54
2*
умножает его с 2, вы получаете108
, который является ASCII кодl
..
дублируетl
['1'..++~]
'1'..
кладет символ1
в стек и дублирует его дважды.++
объединяет три символа и возвращает строку111
~
преобразует его в целое число111
, которое является кодом ASCII дляo
[8 2?2/]
8 2?
рассчитывает 8 2 , вы получаете64
2/
делим его на 2, вы получите32
, что является кодом ASCII для пробела.[' '(4/.(`\`\+~]
' '(
преобразует пространство в32
.4/.
делит его на 4, вы получаете8
. В.
дублирует его.(`
уменьшает значение второго8
и преобразует его в строку.\
меняет два верхних элемента8
Становится верхним элементом.`
преобразует в8
строку.\
меняет два верхних элемента7
Становится верхним элементом.+
объединяет две строки. Вы получаете87
(как строка).~
преобразует строку87
в целое число87
, которое является кодом ASCII дляW
.['1'.+~2?10-]
'1'.
кладет символ1
в стек и дублирует его.+~
объединяет два символа в строку11
и преобразует ее в целое число.2?
рассчитывает 11 2 , вы получаете121
.10-
уменьшается121
с 10, вы получите код ASCII дляo
:111
.[13(1)?8((0)))))*-]
13(
кладет12
в стек.1)
кладет2
в стек.?
рассчитывает 12 2 , вы получаете144
.8((
кладет6
в стек.0)))))
кладет5
в стек.*
умножается6
и5
получаешь30
.-
вычитаете144
с30
, вы получаете114
, который является кодом ASCII дляr
[6`(1)*]
6`(
преобразует6
в символ и принимает его код ASCII:54
1)*
умножает54
с2
, вы получите108
, в ASCII - кодl
['('(4/2?]
'('(
преобразует(
в свой код ASCII40
.4/
делится40
на4
, вы получите10
.2?
вычисляет 10 2 , вы получите100
, который является кодом ASCII дляd
[' '()]
' '(
преобразует пространство в код ASCII:32
)
увеличивает32
, вы получите33
, который является кодом ASCII для!
+++++++++++
объединяет все коды ASCII в одну строку.источник
Brainf ***
Не уверен, что это действительно считается запутанным, но он никогда не использует более четырех символов плюс или минус подряд. Вот и все.
источник
Mathematica
Простая алгебра я по математике.
источник
FromCharacterCode
разбивает все интриги ...FromCharacterCode
теперь запутан. Так и естьCoefficientList
.С
Мета-затемненный. Запуск этого через препроцессор дает вам это:
Выход:
Изменить: добавлена подсветка синтаксиса для ясности. :-П
источник
u *l=x;
иfree(l);
дает мне тот же результат.шалфей
Объяснение:
11382954456.digits(42)
преобразует 11382954456 в базу 42 и дает массив его цифр, который[6, 1, 0, 5, 4, 3, 2]
Таким образом, на
sum
самом деле дает сумму 1 + 2 + 4 + ... + 32 + 64, что составляет 127Затем
5105882569598991528047304.digits(...)
преобразует число в базу 128, которая дает список[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]
И это коды ASCII для строки, которая будет напечатана.
источник
Javascript (28187 символов)
Наверное, не самый короткий способ поздороваться с этим миром.
Создано с помощью JSFuck
источник
C:
Выходы:
Hello World!
источник
Malbolge
или же
Я понятия не имею, как это работает.
Источник: http://en.wikipedia.org/wiki/Malbolge#.22Hello_World.21.22_in_Malbolge
источник
Ява
Вот. Вы можете понять, как это работает?
Предупреждение: очень изменчиво Может сломаться спонтанно в будущем.
источник
;)
while((crazy = wtf.read()) != -1) stoned.write(crazy);
xDBefunge
Код с надписью «Привет, мир!»:
Код с надписью «Hello World!»:
источник
Befunge 98 - 7610 персонажей
Исходя из моего ответа здесь: https://codegolf.stackexchange.com/a/15736/9498
В качестве бонуса этот ответ не использует никаких чисел и не содержит лишних символов (то есть не существует комбинации символов, которые можно было бы удалить, чтобы он выдает одинаковый результат).
Попробуйте здесь (вставить код, заменить каждый экземпляр
'/'[
с"/["
): http://www.quirkster.com/iano/js/befunge.htmlКак это устроено:
Дополнительный бонус: этот пост настолько длинный, что требуется около 1 секунды, прежде чем stackexchange распознает изменения в написании этого поста.
источник
Brainf ** к
Это запутано, и все же, это не может быть проще.
Потому что когда вы присмотритесь
источник
JavaScript
Никаких числовых литералов, строковых литералов и только одна функция (не включая
console.log
)!Демонстрация здесь .
источник
[]
буквальный ли?No number literals
, и я пропустил номер. Если вы хотите, можете использоватьArray()
вместо. Это не было бы буквальным. И это сделало бы это более запутанным. Кроме того, вы можете использовать+false
для+[]
. Или дажеArray()-Array()
.Python 2.6+
Нет строк, просто простая функция полинома .
источник
Этот язык программирования
Можете ли вы угадать, что он делает?
Возможно, вам придется пойти глубже в кроличью нору, чтобы узнать.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Язык программирования новее, чем вызов.
источник
С
Комментарии там просто для того, чтобы ввести в заблуждение неосведомленных читателей.
Константы построены так, что ее представление в памяти (для систем с прямым порядком байтов) совпадает со строкой
"Hello World!"
. Затем массив (распадается на указатель) передается тудаputs
, гдеputs
слепо обрабатывает его как achar*
и печатает все, пока он не попадетNUL
(который закодирован в последнем числе).Код компилируется (с предупреждениями) и печатает ожидаемый вывод с gcc 4.7.0, Windows 7 32-bit.
источник
Ява
Проверьте здесь.
Я знаю, что отстойно использовать символы вместо строк. Странно, что все работает правильно. Не так ли?
источник
a[]
.C (честно говоря, 90% C препроцессора):
Только с gcc или другим компилятором, который поддерживает
__COUNTER__
макрос.источник
(Я знаю, это не очень странно .)
Округ Колумбия
Выход:
источник
dc<<<5735816763073005734600101863690P
C #
Нет строковые или символьные литералы, хотя строковые функции не используются. Обфускация через рот13.
источник
UryybJbeyq
перечислений и либо увеличивает индекс того, какую букву нужно извлечь из имени, либо сбрасывает индекс в зависимости от длины имени.С
Нет строк, нет массивов, нет символов, очень мало очевидных «больших данных для хранения данных».
источник
> <> (Рыба)
Я сделал небольшой лабиринт для указателя инструкций в> <>
Онлайн> <> переводчик здесь
источник
C ++
Выход
источник