Как своего рода часть 2 Hello, World! (Любой другой символ) , напишите программу так, чтобы все три из этих программ печатали «Hello, World!»: Всю программу, 1-й, 3-й, 5-й и т. Д. Символы вашей программы, а также 2-й, 4-й, 6-й, и т.п.
Если ваша программа:
abc
def
Должно появиться «Hello, World!», Но так должно
acdf
И
b
e
Нет решений со встроенным «Hello, World!» S.
code-golf
source-layout
hello-world
Лео Тененбаум
источник
источник
Ответы:
машинный код x86, 378 байт
PROG.COM Загрузите и запустите его в эмуляторе MS-DOS , например , DOSBox .
Также вы можете скачать LEFT.COM и RIGHT.COM
Как это работает и как запустить
Смотрите ответ на первую часть
магия
Если вы хотите выполнить команду кода операции 0xAB с одним параметром 0xCD , вы пишете
Генератор
Запустите код, получите гекс. Преобразовать в двоичный
Показать фрагмент кода
источник
Python 3 , 115 байт
Каждый странный персонаж
Каждый четный персонаж
Попробуйте онлайн!
Возможно, это может быть намного короче, но я рад, что мне удалось заставить его работать на Python. Похоже на ответ vroomfondel на первую часть.
Скучный 93-байтный ответ
Каждый странный персонаж
Каждый четный персонаж
Попробуйте онлайн!
источник
> <> , 45 байт
Или просто персонажи:
Или просто странные символы:
Попробуйте их онлайн: оригинальные , четные , шансы .
Исходная версия помещает "
!!ddllrrooWW oolllleeHH
" в стек, затем рыба подпрыгивает между ними>~o <
, что удаляет букву, печатает две, удаляет две, печатает две, удаляет две и т. Д. Две полупрограммы являются довольно стандартными программами струнной печати. Сложная часть сочетала"
и!
правильно включала и выключала строковый режим во всех трех программах.источник
Befunge-98 , 43 байта
Попробуйте онлайн!
Только странные:
Попробуйте онлайн!
Только четные
Попробуйте онлайн!
объяснение
Полная программа:
В нечетной программе значение
2
отсутствует, так что оно10x
вообще ничего не делает (в любом случае оно устанавливает дельту, по(1,0)
умолчанию). Остальная часть программы остается такой же.В четной программе мы просто нажимаем
2
на начало, которое мы можем полностью игнорировать. Остальная часть программы такая же, как и раньше.источник
Гаммаплекс , 46 байт
Посмотреть здесь.
Переводчик. Может потребоваться некоторые изменения для работы в современных компиляторах.
источник
Mathematica, 65 байт
Он выбрасывает некоторые предупреждения, печатает
Hello, World!
и возвращаетNull PPrriinntt[["" HHeelllloo, Null, "" WWoorrlldd!!]]
. При запуске в качестве программы (не в REPL) возвращаемое значение не будет напечатано.После удаления четных символов:
Он печатает
Hello, World!
и возвращает"el,Wrd" Null Pit
.После удаления нечетных символов:
Он печатает
Hello, World!
и возвращаетNull ol! rn[Hlo]
.источник
машинный код x86, 73 байта
Вдохновленный решением Евгения Новикова , я подумал, что это должно быть выполнимо с меньшим количеством уловок, т. Е. Просто прыгать, чтобы иначе «разделить» коды для всех трех вариантов. Я все еще пытаюсь с умным вариантом, который использует в
lodsb; lodsb
качестве центральной точки (поэтому для всех вариантов требуется только одна строковая константа)Если я правильно помню из моих детских дней, крошечная модель COM начинается с,
DS=CS=SS
и код загружается, начиная сCS:0100h
. Я не предполагаю, что гарантировано, что код загружен в обнуленный блок памяти (если бы это было гарантировано, я мог бы отбросить два байта).Разборка длинного кода должна быть
Разборка нечетного кода
Разборка четного кода:
источник
8A
На 0116 должен бытьBA
вместо этого, и строки заканчиваются$
, а не NULL.Сетчатка , 48 байт
Попробуйте онлайн!
Нечетные позиции:
Попробуйте онлайн!
Четные позиции:
Попробуйте онлайн!
объяснение
Полная программа:
Это ничего не делает вообще. Это
|
не существующая опция конфигурации. ЭтоG
делает этап grep, но на самом деле нечего искать, и регулярное выражение пусто, так что это ничего не делает. Цель этого этапа - создать два перевода строки перед основным «Hello, World!» линия, так что один из них всегда переживает сокращение. Причина для того, чтобы сделать это оленем grep, состоит в том, что нам нужно компенсировать четность линий, а стадии grep требуют только одной строки.Это превращает (пустую) рабочую строку в требуемый вывод с каждым удвоенным символом.
Это ничего не делает. Регулярное выражение пытается сопоставить a
_
и a&
после конца строки, что, конечно, невозможно. Нам понадобятся эти символы в сокращенной версии, опять же, чтобы справиться с исчезающими переводами строки.Наконец, мы удаляем дубликаты символов, заменяя их
(.)\1
на$1
.t?
Никогда не используется , но снова будет необходимо в сокращенных версиях.Странная программа:
G
Не может соответствовать пустой входной сигнал, но именно поэтому у нас есть ,|
чтобы альтернативный пустой матч. Это превращает пустую рабочую строку в желаемый вывод.Это заменяет подчеркивания на
()1?$
, но в строке нет подчеркиваний, так что это ничего не делает.Четная программа:
`
Просто обозначает пустую строку конфигурации, поэтому мы снова использовать пустое регулярное выражение для замены рабочей строки с выходом. На этот раз мы также вставляем,$&
но это само совпадение, которое, конечно, пустое, поэтому ничего не делает.Это заменит любой символ, за которым следует вкладка, с символом a
1
, но у нас нет никаких вкладок, так что это тоже неактивен.источник
Луа , 106 байт
Попробуйте онлайн!
Альтернатива 1:
Попробуйте онлайн!
Альтернатива № 2:
Попробуйте онлайн!
Сценарий генератора: попробуйте онлайн!
источник
CJam , 44 байта
Попробуйте онлайн!
источник
PHP, 70 байт
Странные символы:
Четные персонажи:
источник
Haskell , 92 байта
Попробуйте онлайн! Похоже, злоупотребление комментариями слишком много для подсветки синтаксиса.
{- ... -}
это встроенный или многострочный комментарий, тогда как--
начинается строчный комментарий.Странные символы:
Попробуйте онлайн!
Четные персонажи:
Попробуйте онлайн!
источник
Zsh , 54 байта
Попробуйте онлайн!
Основная программа успешно выполняет первый оператор, поэтому оператор после логического значения
||
игнорируется.Для нечетного / четного, он
<<<Hello\ world!
становится либо неопределенным,<<heredoc
либо<file
предоставленным на stdin. В любом случае,||
становится|
, и поэтому все, что выводится первой командой, передается и игнорируетсяecho
.источник
LOGO , 71 байт
(в программе есть завершающий перевод строки)
Две удаленные версии:
и
(в программе есть завершающий перевод строки)
Для объяснения, что
pr
иer
делать, смотрите этот пост . В данном случаеer
это фид со словом определить имя процедуры.Это
\
экранирующий символ в Logo, который будет экранировать символ новой строки после конца комментария, поэтому сделайте вторую строку (rHlo ol!e |
) второй удаленной программы комментарием.источник
Javascript, 68 байт
Нечетные персонажи:
Четные персонажи:
Модифицированная версия моего ответа на другой.
источник
l
вHHeelllloo
.Perl 5 , 61 байт
60-байтовый код + 1 для
-p
.Попробуйте онлайн!
Каждый нечетный байт
Попробуйте онлайн!
Каждый четный байт
Попробуйте онлайн!
источник
BotEngine ,
180178 байтНа основании моего ответа на этот вопрос.
Нечетные символы (обратите внимание на несколько завершающих пробелов в последней строке):
Четные персонажи:
источник
Рунические чары , 52 байта
Попробуйте онлайн!
Руническая система обычно не очень хорошо справляется с радиацией, поскольку случайное удаление символов управления потоком делает отслеживание выполнения огромной болью, но предсказуемое излучение, как у любого другого персонажа? Легко, мы просто кодируем две программы, которые обращены друг к другу и чередуются, затем добавляем третью копию для базового выполнения и контролируем, какая из них выполняется одним символом. В программе 2 третья копия - это мусор, который никогда не видели, а в программе 3 он сохраняет кавычки, позволяя извлекать его, не печатая.
Программа 1 выполняет только эту часть:
Программа 2 выполняет только эту часть:
Как это:
Попробуйте онлайн!
Программа 3 выполняет только эту часть:
Как это:
Попробуйте онлайн!
"drW,le"
Часть выполнена, но~
сразу всплывает его из стека, сохраняя желаемый результат.Наивно может показаться, что преобразование ответа> <> приведет к более короткой программе, весом до 45 байт:
Однако у Runic есть одно ограничение, которого нет у> <>: максимальный размер стека 10 + маны IP (который изначально равен 10). И
!!ddllrrooWW oolllleeHH
содержит 24 символа, из-за чего IP истекает мана до истечения срока действия непосредственно перед выполнениемR
команды, что не приводит к выводу для базовой программы.Попробуйте онлайн!
источник