G |`
HHeelllloo,, WWoorrlldd!!
$_&
(.)\1t?
$1
Probieren Sie es online!
Ungerade Positionen:
G|
Hello, World!
_
()1?$
Probieren Sie es online!
Gerade Positionen:
`
Hello, World!$&
.\t
1
Probieren Sie es online!
Erläuterung
Das vollständige Programm:
G |`
Das macht überhaupt nichts. Dies |
ist keine vorhandene Konfigurationsoption. Das G
macht dies zu einer Grep-Bühne, aber es gibt wirklich nichts zu begreifen und die Regex ist leer, also macht das nichts. Der Zweck dieser Stufe ist es, zwei Zeilenvorschübe vor dem Hauptmenü "Hallo, Welt!" Zu haben. Linie, so dass einer von ihnen immer die Reduktion überlebt. Der Grund für die Erstellung eines Grep-Stags besteht darin, dass die Parität der Zeilen ausgeglichen werden muss und Grep-Stufen nur eine einzelne Zeile erfordern.
HHeelllloo,, WWoorrlldd!!
Dies verwandelt die (leere) Arbeitszeichenfolge in die erforderliche Ausgabe, wobei jedes Zeichen verdoppelt wird.
$_&
Das macht nichts. Die Regex versucht, nach dem Ende der Zeichenkette ein _
und ein zu finden, &
was natürlich unmöglich ist. Wir werden diese Zeichen jedoch in der reduzierten Version benötigen, um verschwindende Zeilenvorschübe zu beheben.
(.)\1t?
$1
Zum Schluss entfernen wir die doppelten Zeichen durch Ersetzen (.)\1
durch $1
. Das t?
wird nie verwendet, wird aber in den reduzierten Versionen wieder benötigt.
Das ungerade Programm:
G|
Hello, World!
Der G
kann nicht mit der Leereingabe übereinstimmen, aber aus diesem Grund müssen wir |
eine alternative Leereingabe zulassen. Dies macht den leeren Arbeitsstring zur gewünschten Ausgabe.
_
()1?$
Dies ersetzt Unterstriche durch ()1?$
, es gibt jedoch keine Unterstriche in der Zeichenfolge, sodass dies nichts bewirkt.
Das gerade Programm:
`
Hello, World!$&
Das bedeutet `
nur eine leere Konfigurationszeichenfolge, daher verwenden wir wieder die leere Regex, um die Arbeitszeichenfolge durch die Ausgabe zu ersetzen. Dieses Mal fügen wir auch ein, $&
aber das ist das Match selbst, das natürlich leer ist, also macht es nichts.
.\t
1
Dies würde jedes Zeichen, auf das ein Tabulator folgt, durch ein ersetzen 1
, aber wir haben keine Tabulatoren, daher ist dies auch ein No-Op.