G |`
HHeelllloo,, WWoorrlldd!!
$_&
(.)\1t?
$1
Попробуйте онлайн!
Нечетные позиции:
G|
Hello, World!
_
()1?$
Попробуйте онлайн!
Четные позиции:
`
Hello, World!$&
.\t
1
Попробуйте онлайн!
объяснение
Полная программа:
G |`
Это ничего не делает вообще. Это |
не существующая опция конфигурации. Это G
делает этап grep, но на самом деле нечего искать, и регулярное выражение пусто, так что это ничего не делает. Цель этого этапа - создать два перевода строки перед основным «Hello, World!» линия, так что один из них всегда переживает сокращение. Причина для того, чтобы сделать это оленем grep, состоит в том, что нам нужно компенсировать четность линий, а стадии grep требуют только одной строки.
HHeelllloo,, WWoorrlldd!!
Это превращает (пустую) рабочую строку в требуемый вывод с каждым удвоенным символом.
$_&
Это ничего не делает. Регулярное выражение пытается сопоставить a _
и a &
после конца строки, что, конечно, невозможно. Нам понадобятся эти символы в сокращенной версии, опять же, чтобы справиться с исчезающими переводами строки.
(.)\1t?
$1
Наконец, мы удаляем дубликаты символов, заменяя их (.)\1
на $1
. t?
Никогда не используется , но снова будет необходимо в сокращенных версиях.
Странная программа:
G|
Hello, World!
G
Не может соответствовать пустой входной сигнал, но именно поэтому у нас есть , |
чтобы альтернативный пустой матч. Это превращает пустую рабочую строку в желаемый вывод.
_
()1?$
Это заменяет подчеркивания на ()1?$
, но в строке нет подчеркиваний, так что это ничего не делает.
Четная программа:
`
Hello, World!$&
`
Просто обозначает пустую строку конфигурации, поэтому мы снова использовать пустое регулярное выражение для замены рабочей строки с выходом. На этот раз мы также вставляем, $&
но это само совпадение, которое, конечно, пустое, поэтому ничего не делает.
.\t
1
Это заменит любой символ, за которым следует вкладка, с символом a 1
, но у нас нет никаких вкладок, так что это тоже неактивен.