Напишите программу, которая не требует ввода и печатает Hello, World!
на стандартный вывод или ближайшую альтернативу вашего языка. Подвох в том, что каждая строка в вашей программе должна содержать только печатные символы ASCII и должна быть в лексикографическом порядке, или отсортирована.
Вот все 95 печатных символов ASCII по порядку:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Так, например, строка !!A0~
будет недействительной, потому что A
и 0
не в порядке. Линия !!0A~
будет действительной.
Каждая строка в вашей программе может быть любой длины и может содержать любое количество строк. Пустые строки считаются отсортированными. Каждый из новых строк в вашей программе должен быть одинаковым (без микширования \n
и \r\n
). Вкладки и другие непечатаемые символы ASCII запрещены.
Из-за популярного спроса условие выигрыша было изменено: выигрывает
подача с наименьшим количеством строк . Tiebreaker переходит к самой короткой программе (переводы строк считаются как одиночные символы).
Только Hello, World!
и дополнительный конечный перевод строки должен быть выведен. Обратите внимание, что HQ9 + недопустим, поскольку он выводит hello, world
. Я могу запретить языки, похожие на HQ9 +, которые имеют один символ "Hello, World!" Команды из-за их тривиальности.
Подсказка:
Это, безусловно , возможно , в унарный и Lenguage , хотя и не очень сжато.
источник
Ответы:
Наушники , 1 строка, 366 байт
Headsecks - тривиальная замена Brainfuck, где единственное, что имеет значение, это кодовая точка по модулю 8. Эквивалент Brainfuck - это просто
К счастью, это наивный подход просто подходит. Есть некоторый потенциал для игры в гольф, но это может быть сложно.
Протестировано с использованием этого интерпретатора Python .
Генерация кода
источник
/// , 7 строк, 22 байта
Редкий шанс для /// быть конкурентоспособным (ну, пока никто не начинает с Унарного и Ленгуагского ...).
Код сначала встречает
/
и анализируеткак инструкция замещения, которая удаляет все новые строки из оставшейся части программы. После этого программа просто читает
который печатается дословно, так как не содержит никаких дополнительных слешей.
источник
JavaScript (
676662 строки,227269 байт)(Примечание: тестируется только на Firefox 36 и Safari 8, содержит незначительные функции ES6 (
Set
класс))Код выше в основном делает:
Очевидно
alert
, не сортируется. Таким образом, вместо этого нам нужно сгенерировать оператор в виде строки и «вычислить» его:Как сгенерировать строку? ES5 поддерживает продолжение линии, так что
Но код символа
\
появляется перед всеми строчными буквами, поэтому мы должны генерировать строчные буквы, используя другие методы.Мы заимствуем некоторую идею о JSFuck здесь. Строчные буквы, включенные в операторы оповещения:
все они могут быть извлечены из символов стандартных объектов, которые могут быть выражены в виде некоторой отсортированной последовательности:
Как мы оцениваем строку? Конечно, мы не можем использовать, так
eval(s)
как он не отсортирован. В качестве альтернативы мы могли бы использоватьFunction(s)()
, но мы не можем использовать,Function
поскольку он также не отсортирован. Тем не менее,Function
является конструктором всех функций, что означаетSet.constructor === Function
.Добавление идентификатора
constructor
делает список строчных букв:который, к счастью, все еще может быть создан
"truefalseundefinedfunction"
:После предварительного кодирования приведенный выше код должен выглядеть так:
Обновление: Переименовано
E
,L
,O
,R
,T
к различным повторению ,$
чтобы уменьшить 4 линии.источник
=Z[3*7]
это можно записать так,=Z[~-22]
что требуется только один разрыв строки вместо двух.Бессонница , 4 строки, 59 байт
Эта программа генерируется путем оптимизации количества строк.
10 строк, 43 байта
Данная программа генерируется путем оптимизации количества байтов.
источник
Cygwin bash, 16 строк, 60 байтов
Это работает только из-за нечувствительного к регистру имени файла в Windows и того факта, что Cygwin просматривает утилиты без учета регистра, даже если вы не настроили его на распознавание пути без учета регистра.
Обратите внимание на это
ECHO
в конце.источник
> <> , 6 строк, 111 байт
У меня проблемы с игрой в гольф на дополнительной линии, но в любом случае я счастлив, что победил метод с 7 линиями.
объяснение
> <> - это основанный на стеке двумерный язык, где инструкции представляют собой одиночные символы, и поток программ может быть вверх, вниз, влево или вправо.
"
Инструкция переключает строки синтаксический, толкая символов до тех пор , закрывающий"
не будет выполнено, но из - за природы> <> нет такого понятия , как «многострочный строки синтаксического анализа» , как со строками CJam в или тройных кавычках Python. Это оказалось большой проблемой, потому что начало и конец строки с а"
и другие символы между ними (например,"some chars"
) не допускается!Обратите внимание, что
/
и\
отражает ход программы, поэтому мы фактически выполняем первую строку, а затем все строки в обратном порядке, и большинство строк фактически выполняются в обратном порядке!Кстати, вот забавная попытка наименьшего байта> <> (23 строки, 47 байтов):
источник
CJam,
54 строки, 162 байтаТо же количество строк, что и бессонница! (но намного больше байтов)
Попробуйте онлайн .
объяснение
CJam автоматически печатает стопку позже.
Спасибо @Optimizer за напоминание о том, что
Sc
работает, потому что в противном случае происходитSX|
сбой (это происходит заданным образом или вместо этого, давая массив, состоящий из пробела и 1).источник
> <> (Рыба) , 5 строк, много байтов
Код очень длинный, когда я говорю
[6535529689086686142930090 '+' signs]
и[6535529689086686142930090 'd' characters]
в первой строке кода, я имею в виду, что есть буквально6535529689086686142930090
плюс знаки подряд!(И для следующих строк добавьте необходимые пробелы.)
Более короткая тестируемая альтернатива, которая печатает только
Hi
:Метод:
:1(?;:882**%:o-288**,
.(С помощью этого метода мы можем напечатать произвольную строку длиной 2+ символа).
источник
[6535529689086686142930090 '+' signs]
и[6535529689086686142930090 'd' characters]
буквально находится в первой строке кода." (Если неясно, что я имею в виду под этим, проверьте второй фрагмент кода.)PHP (7/17 строк, 36/59 байт):
Из-за количества неверных ответов я переписал этот ответ.
Версия браузера? Ушел.
Но у меня есть 2 решения, оба основаны на побитовых
xor
(^
) строк в PHP.Это чрезвычайно мощное решение! Иногда это позволяет сэкономить много байтов.
Во-первых, самый короткий ответ:
Я знаю, это выглядит ужасно, но это работает!
Следующий зависит от перевода строки.
Да, он использует переводы строки (
\n
требуется стиль / UNIX)!Новые строки на этом обязательны для работы.
Это не идеально, но работает!
Оба ответа были основаны на @ MartinBüttner «s решение :
Особая благодарность @ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ , @CJDennis , @ MartinBüttner и @skagedal за обнаружение всех моих ошибок и за их предложения.
источник
Hello , Wor l d !
. Обратите внимание на лишние пробелы! К сожалению, это неверный ответ.<?php
- недействительная! Впрочем, я прощу тебя за это! Хорошо, только что проверил,<?Php
что работает, так что я только что узнал, что стартовый тег не учитывает регистр!"!<br
- это не отсортировано. Вторая строка 10:."!
- не отсортирована.Pyth, 7 строк, 23 байта
Довольно просто, просто используйте многострочную строку и удалите новые строки.
Попробуй это здесь.
источник
Далее, 41 строка, 143 байта
Попробуйте онлайн.
Я очень горжусь этим. Я довольно быстро вытащил его, как только обнаружил, что смогу это сделать, - Google искал языки, не чувствительные к регистру, и уже хорошо знаю Forth. Его можно почти точно сократить, как байты, так и строки. Предложения приветствуются. : D
Эта программа по существу выталкивает десятичное значение каждого символа ASCII, а затем печатает каждый из них. Я пытался оптимизировать, пока писал, поэтому он менее читабелен, чем хотелось бы.
источник
Emit
линии не работают, так какi
(105) меньше , чемm
(109).Marbelous, 9 строк, 94 байта
Проверьте это онлайн здесь.
Using spaces for blank cells
должен быть проверен.Визуальное представление источника:
Объяснение: Каждое шестнадцатеричное значение в этой программе перемещается вниз каждый «тик» (если только он не включен
\\
, в этом случае он перемещается вправо).++
будет увеличивать значение,--
уменьшать,~~
применять побитовое значение нет и т. д. Значения, которые падают снизу, печатаются как символ ASCII.Например:
33
в верхнем углу становится(((0x33 +1 +1) << 1) +1 +1 = 0x6C (l)
.источник
Perl, 17 строк
источник
Rebol - 15 строк (51 байт)
Слова в Rebol нечувствительны к регистру (например
PRINT
,Print
иprint
будут вызывать одну и ту же функцию).Приведенный выше код приведен в порядок:
NB.
sp
возвращает пробел !источник
{
не может быть перед любыми буквами.{,}
. Теперь этоSp + 12
(более 3 строк), что эквивалентноУнарный , 1 строка, много байтов
Каждый персонаж в этой программе
0
. Здесь слишком длинный источник, но он состоит из строки из множества нулей:Это десятичное представление для этого двоичного числа:
Который был создан из этой программы BrainF ***:
Посмотрите, как я его сгенерировал: http://ideone.com/lMT40p
источник
Пакет - 39 строк (202 байта)
Я хотел сократить размер, включив отложенное расширение, запустив код внутри
cmd
вызова, используя/v on
коммутатора, но не смог пройти все караты.Без перевода строки (и каратов, чтобы избежать перевода строки):
источник
Рубин, 19 строк, 95 байтов
Возможно, второе самое сложное ограничение кода для Ruby, которое я видел на этом сайте, после чудовищности здесь .
Редактировать для объяснения: единственный отсортированный метод вывода Ruby - это
<<
метод в STDOUT. К сожалению, константа для STDOUT есть$>
и>
выше ASCII, чем большинство символов, поэтому на самом деле невозможно вызвать метод для нее. Нам нужен многострочный оператор присваивания, чтобы получить более подходящее имя переменной,$;
(точка с запятой все еще довольно высока, но большинство переменных этой формы либо не присваиваются, либо могут быть только строками).Символы (
:Wor
и т. Д.) - это самый простой способ сделать литерал, и я не вижу способа вырезать строки из строки, поэтому мне нужно несколько операторов print. Пробел и пунктуация не могут входить в символьный литерал, но, к счастью,chr
метод чисел допустим, поэтому я могу получить символ из его значения ASCII.::
это альтернативный способ вызова методов. Пространство сложно, потому что я не могу писать32
, поэтому я вычитаю 1 из 33 и присваиваю его переменной.источник
Сетчатка, 12 строк, 29 байт (неконкурентная)
Язык новее, чем вызов.
Попробуйте онлайн
источник