G |`
HHeelllloo,, WWoorrlldd!!
$_&
(.)\1t?
$1
Provalo online!
Posizioni dispari:
G|
Hello, World!
_
()1?$
Provalo online!
Posizioni pari:
`
Hello, World!$&
.\t
1
Provalo online!
Spiegazione
Il programma completo:
G |`
Questo non fa assolutamente nulla. Non |
è un'opzione di configurazione esistente. Questo lo G
rende un palcoscenico grep, ma non c'è davvero nulla da fare e il regex è vuoto, quindi questo non fa nulla. Lo scopo di questa fase è di avere due avanzamenti di riga davanti al principale "Ciao, mondo!" linea in modo che uno di loro sopravviva sempre alla riduzione. La ragione per rendere questo un cervo grep è che dobbiamo compensare la parità delle linee, e le fasi grep richiedono solo una singola linea.
HHeelllloo,, WWoorrlldd!!
Questo trasforma la stringa di lavoro (vuota) nell'output richiesto con ogni carattere raddoppiato.
$_&
Questo non fa niente. Il regex cerca di abbinare a _
e a &
dopo la fine della stringa, il che è ovviamente impossibile. Tuttavia, avremo bisogno di quei personaggi nella versione ridotta, ancora una volta per far fronte alle alimentazioni di linea che svaniscono.
(.)\1t?
$1
Infine, rimuoviamo i caratteri duplicati sostituendoli (.)\1
con $1
. Ilt?
viene mai utilizzato, ma sarà nuovamente necessario nelle versioni ridotte.
Il programma dispari:
G|
Hello, World!
Non G
può corrispondere all'input vuoto, ma è per questo che dobbiamo |
consentire una corrispondenza vuota alternativa. Ciò trasforma la stringa di lavoro vuota nell'output desiderato.
_
()1?$
Questo sostituisce i trattini bassi con ()1?$
, ma non ci sono trattini bassi nella stringa, quindi non fa nulla.
Il programma pari:
`
Hello, World!$&
Il `
solo denota una stringa di configurazione vuoto, quindi usiamo di nuovo la regex vuota per sostituire la stringa di lavoro con l'uscita. Questa volta inseriamo anche, $&
ma questa è la corrispondenza stessa, che è vuota, ovviamente, quindi non fa nulla.
.\t
1
Ciò sostituirà qualsiasi carattere seguito da una scheda con un 1
, ma non abbiamo alcuna scheda , quindi anche questa è una no-op.