Ваша цель написать «Привет, мир!» (минус кавычки). Это конкурс популярности , поэтому побеждает большинство голосов. Длина кода будет использоваться для разрыва связей.
Все идет, пока это в следующих правилах:
- Все символы должны быть буквами или цифрами, поэтому вы можете использовать только символы в строке "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".
- Весь код, который вы используете, должен быть в одном файле, за исключением импортированных модулей / классов / независимо от того, как они называются на вашем любимом языке.
- Разрешены только стандартные библиотеки / фреймворки для выбранного языка (например, модуль Python Math разрешен, а Numpy, Scipy и Pygame - нет). Я позволю TkInter, так как это де-факто стандарт для графических интерфейсов в Python.
- Не допускается ввод данных, будь то чтение из стандартного ввода, чтение файла, отображение изображения или чтение из Интернета.
+10 очков брауни, если вы поймете, как это сделать на Java, не нарушая правил.
На ваших отметках, получите набор, код!
РЕДАКТИРОВАТЬ: фигурные скобки ({}), квадратные скобки ([]) и круглые скобки (()) разрешены, поскольку это было бы практически невозможно для большинства языков без них. Я также удаляю правило ограничения персонажа. Надеюсь, это сделает это более интересным.
РЕДАКТИРОВАТЬ ^ 2: пробел также допускается. Мой мозг не работает должным образом, извините. >. <
;
? Как я могу написать что-нибудь на C?72 101 108 108 111 44 32 87 111 114 108 100 33{a.
требуется точка в конце, а путь черезu:
аналогично требует двоеточия. Без.
и:
мы ничто.Ответы:
Perl
Некоторые говорят, что perl - это язык, полный шума ascii и случайных символов вроде
$
... Это неправда: Pисточник
s/PATTERN/REPLACEMENT/FLAGS
, но вы можете использовать почти все, что захотите, вместо слешей. Здесь код использует «z» вместо косой черты и превращает (ничего) в «Helloq Worldm», а затем заменяет «q» на chr 44 (используя флаг \ e для оценки REPLACEMENT или «chr 44» в качестве выражения), которое равно «, ». Затем он заменяет «m» на chr 33, «!» И печатает его.q//
, любой разделитель может быть использованq!! q** q\\ q;;
. Несколько исключений в том , что , чтобы закрыть(
использовать)
,q() q[] q{} q<>
и что использовать буквенно - цифровые символы в качестве разделителя, он должен быть отделен от оператора , чтобы запретить двусмысленности, напримерq qq
,q 66
. Те же приемы применимы и к другим операторам, подобным кавычкам.С
источник
switch(putchar(72)){}switch(putchar(101)){}
и т. Д.putchar(putchar(108))
(редактировать - BBC basic перешел на отдельный ответ, как и предлагалось. Большинство голосов по этому вопросу, безусловно, за ответ LOGO.)
LOGO
Переводчик на http://www.calormen.com/jslogo/#
Вывод (зеленый треугольник - курсор черепахи)
источник
Applescript
Никаких скобок
[]
, скобок{}
или скобок()
в этом:Выход:
источник
set s to s as list
преобразуется"H"
в{"H"}
(список). В других языках, таких как Java, обычно это сделать намного сложнее.удар
Это работает, если вы прищурите глаза:
источник
banner Hello World
илиfiglet Hello World
,
и!
. В противном случае, я бы просто использовал старыйecho
.base64
Удовлетворяет оригинальным правилам.
источник
"
питон
Так что, мы просто предполагаем, что все читают по горизонтали? Для тех пользователей, которые любят читать по вертикали:
источник
sys.stdout.write
- это стандартный способ вывода текста без перевода строки в большинстве версий на Python (поведение немного изменилось в 3.0). Мы не можем сделать это здесь из-за периодов.Полиглот: HQ9 +, H9 +, HQ9 ++, CHIQRSX9 +, HQ9 + B и HQ9 + 2D (1 байт)
Спасибо @victor за список языков.
источник
OMGROFL
Я большой поклонник эзотерических языков. К счастью, OMGROFL буквенно-цифровой:
Команда
iz
устанавливает значение переменной, в этом случаеlol
,lool
иloool
служит переменным ...Команда
rofl
выводит ASCII, эквивалентный числу, сохраненному в переменной.Команда
stfu
завершает программу;)источник
Кобол
Требуются некоторые изменения, чтобы стать действительно буквенно-цифровым источником.
PROGRAM-ID может быть удален. Вы получаете сгенерированное имя программы (см. Сообщения).
РАБОЧАЯ ХРАНИЛИЩА может быть сброшена. Опять стонет компилятор.
Поскольку в обеих этих строках ранее отсутствовали точки останова / периоды, которые больше не актуальны, поскольку описания полностью отсутствуют, количество сообщений об ошибках такое же, как и раньше, и все еще не влияет на сгенерированный код для программы.
При изменении COMP-5 на COMP предложения VALUE больше не допускаются, поскольку COMP 9999 имеет только четыре десятичных знака, тогда как COMP-5 представляет собой двухбайтовый двоичный файл со всеми доступными битовыми значениями.
Значения в MOVE - это десятичные значения, которые дают двоичные значения, которые дают пары символов.
Несмотря на то, что поля COMP имеют четыре цифры и не допускают предложений VALUE с более чем четырьмя цифрами, вы можете использовать больше цифр в MOVE литерального значения без усечения в этой точке ... не спрашивайте меня, почему. Опция компилятора DIAGTRUNC (которую я отключил) выдаст диагностическую диагностику для них.
Опция компилятора TRUNC (BIN) может использоваться для обработки COMP как COMP-5, но MOVE - это еще один способ сделать это.
Поскольку это COBOL, вывод должен быть в верхнем регистре (ложь, но просто для удовольствия).
Хорошо, уступил, теперь производит:
Что, будучи нечетным числом символов, потребовало некоторых дальнейших изменений, поскольку мы не можем иметь двоичные поля с нечетным числом байтов с этим компилятором. Посмотрите на эту линию 13 X! Обычно это пишется как X (13), но может быть, как я показал ...
И ORTEXT нужен (или не OR, во всяком случае) как имя, потому что OR является зарезервированным словом для компилятора (это, конечно, означает OR).
Это значения EBCDIC, а не ASCII, поскольку он работает на коробке с поддержкой EBCDIC и Big Endian.
О, COBOL требует много полных остановок / периодов. Я оставил их (они забанены), поэтому получил много сообщений компиляции. Просто сказал компилятору генерировать код в любом случае (ни одно из сообщений не относится к объектному коду).
Даже без DIAGTRUNC, сообщения теперь до 17 ...
источник
-
разрешеноRuby (с использованием только чисел и пробелов)
Выход:
Hello, World!
источник
Javascript
Используйте консоль браузера для тестирования.
источник
JavaScript
источник
ФЕРНАНДО
источник
Rebol
Буквенно-цифровое решение:
Выше приведено обновление, в котором доктор Рэбму использует превосходное предложение
add space 1
(которое производит!
), чтобы добраться до всех персонажей.Ниже оригинальная версия:
Укороченная версия с кронштейнами:
И еще более короткая версия с брекетами:
И самая короткая версия с двумя скобками и скобками:
Ребол использует фигурные скобки
{}
для многострочного цитирования. Настолько полностью действительный при изменениях правил, но не совсем в полном духе (ИМХО), как мои первые два ответа выше.NB. Печать
!
была болью!Rebol разрешает и использует знаки препинания для имен функций и типов данных. Таким образом, такие параметры, как
to-char 33
илиto char! 33
не будут разрешены в соответствии с правилами (даже если эти знаки препинания не являются операторами сами по себе).К счастью, я нашел дерзкий путь, превратив системный объект Rebol:
make object! [...]
в струну, а вишня выбрала это!
из нее :)Обновление: А теперь еще и вишня выбрала запятую из текста лицензии в системном объекте.
источник
!
не допускается-
или!
теперь вы можете убрать голос «против»С
Используются только буквенно-цифровые символы, пробелы и фигурные скобки {}, скобки [] и скобки ().
printf () принимает char * в качестве аргумента, но так как мы не можем использовать кавычки ("), я типизирую строку как длинный длинный массив. Здесь мы видим значения ASCII-строк с прямым порядком байтов (0x48 = H, 0x65) = e, 0x6c = l и т. д.) Я задаю его как long long [], так как таким образом я могу передать 8-байтовый аргумент и, следовательно, использовать только два вызова printf () вместо четырех.
источник
BBC BASIC
Эмулятор на bbcbasic.co.uk
Сплит от моего логотипа ответа.
Легкий способ
Цифры справа - это просто коды ASCII. Это так же, как печать. Если бы мне разрешили запятую, я мог бы сделать это в одной строке (
VDU 72,101,108,etc.
)Более творческий путь
источник
Mathematica
источник
ОКРУГ КОЛУМБИЯ
DC - почти идеальный инструмент для работы.
P
Команда DC - извлекает одно число из стека и выводит свое необработанное представление компьютера в STDIO. Видя как5735816763073854918203775149089 = 0x48656C6C6F2C20576F726C6421
, что представлено как0x21, 0x64, 0x6C... = 'H', 'e', 'l'...
в порядке байтов, он выводитHello, World!
.источник
16i48656C6C6F2C20576F726C6421P
JavaScript!
И они сказали, что это невозможно сделать ... Без операторов присваивания, без конкатенаторов, без кавычек! Arghhhh!
Не бойся ... Потому что сила это
with
ты ...источник
Javascript
Обновление: удалось вырезать кучу персонажей, также введя функцию World.
Другое решение Javascript, которое пишет в console.log:
Вдохновленный этой записью .
Сначала я определяю функции с именами Hello и World. Это будет использовано позже.
Затем я начинаю свою цепочку вложенных символов.
with (console)
Иwith (String)
используется так , что я могу позже Invokeconsole.log
иString.fromCharCode
без использования точки.План теперь состоит в том, чтобы создать строку
Hello, World!
, злоупотребив вложенными символами. Каждый раз, когда я вызывал concat (), полученная строка будет контекстом следующего блока with. Я использую краткий путь, чтобы быстро получить"Hello"
доступ кname
свойствуHello
функции. Затем я объединяю символы запятой и пробела с помощьюString.fromCharCode
.Следующий трюк - получить
"World"
часть строки. Я не могу использовать тот же метод, который использовал для полученияHello
, так как не могу вызвать World.name. Вместо этого я помещаю эту логику в метод World и вызываю ее.Наконец, я добавляю последний восклицательный знак и отправляю результат прямо в функцию log, которая, конечно, console.log.
источник
Perl
В современном Perl (5.10 или новее):
В более старом Perl:
Оба вышеупомянутых решения используют кавычный
q
оператор Perl и допускают выборочные разделители для цитирования строки, например.q{}
q[]
q()
q//
Это решение требует изменения правила, которое позволяет использовать фигурные скобки, скобки или скобки. Так что, несмотря на то, что он полностью действителен, я думаю, что
mniip
отличный ответ на Perl больше соответствует духу правил (+1).Однако, если взять лист
mniip
ответа, моё решение можно записать так:и в то время как труднее для глаз это работает.
источник
syntax error at -e line 1, near "say chr"
Perl
источник
Python:
вызывает "Привет, мир!" появляться на вашем экране. Не веришь мне? Попробуй сам! Кроме того, он на самом деле не использует Интернет, он открывает браузер, который может искать веб-сайт.
источник
DC, (26 байт для игроков в гольф)
Пробелы и
[]
скобки теперь разрешены:Выход:
источник
Ребму , 46 персонажей
Сильно совпадает с решением @ dragetun в Rebol (потому что Rebmu - это обучающий инструмент Rebol / Red, который является «диалектом», целью которого является привлечение внимания к языкам, раскачиваясь в Code Golf. :-P)
Однако, чтобы получить недостающие символы, я сделал что-то более очевидное. Я просто добавил в пространство вместо того, чтобы ходить и просматривать системные строки. Вы можете добавить пробел 1, чтобы получить символьный литерал # "!" и добавьте пробел 12, чтобы получить символьный литерал # ",".
Если мы запустим это, мы увидим, что оно «без помех»:
Что довольно логично:
источник
Пробелы
Хорошо, мы можем использовать пробелы. Он использует только
Space
,Tab
,LineFeed
и игнорирует любые другие символы.С комментарием:
S
,T
илиL
средстваSpace
,Tab
илиLineFeed
соответственно.С подсветкой: http://en.wikipedia.org/wiki/Whitespace_(programming_language)#Sample_code
источник
T-SQL, 52
Ах, это лучше! Прямое двоичное преобразование, всего 52 символа.
Ранее ...
Для этого есть гораздо более умное и удобное решение, которое сработало бы, если бы мы могли использовать
=
и+
(Поиск стандартных встроенных данных в msdb и использование их для построения строки запроса EXEC)Но так как мы не можем, вы получаете этот наивный подход:
источник
Python:
Пффф, кому нужна числовая часть буквенно-цифровой?
Это зависит от региона, поэтому ваш пробег может варьироваться. Однако, если вы действительно хотите повторить этот результат, вы можете использовать следующее вместо операторов импорта:
(это не часть моего представления, это просто разделение моих местных жителей на возможность восстановления)
источник
J - 73 символа
Это может быть сделано, в конце концов!
Вот что касается J. Большинство примитивов - это знаки препинания ASCII, за которыми следуют до двух точек или двоеточий. Те примитивы, которые не состоят из знаков препинания, представляют собой буквенно-цифровые символы, за которыми следуют две точки или двоеточия. Так что нам не разрешено ничего из этого, кроме
{ } [ ]
.[
и]
являются глаголами идентичности и поэтому бесполезны.К счастью,
{
индексирует массивы, поэтому, если бы у нас была, скажем, строка с каждым отдельным символом ASCII (a.
называемая алфавитом ), мы могли бы извлечь буквы по их кодовым точкам ASCII. У нас также есть резервный способ создания строк ,0 : 0
а затем вещи, а затем одинокий)
; двоеточие , в котором есть псевдоним в стандартной библиотеке,def
.Тогда в стандартной библиотеке есть глагол
show
, который дает вам внутреннее представление глагола, если вы передадите ему имя в виде строки. Есть еще один глагол,do
который вычислит строку. Так что, если мы можем извлечьa.
из любого такого представления, мы можем оценить это и вытащитьHello, World!
.Наш спаситель приходит в форме
take
, псевдоним для{.
которого имеетa
в своем имени.show'take'
вернетсяtake=: {.
, поэтому у нас естьa.
и, следовательно, решение.Мы можем избавиться от
{
этого, используя, по существу, эквивалентнуюpick
стандартную библиотеку, но нельзя избежать парена в самом конце.источник