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 Grende 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 (.)\1con $1. Ilt? viene mai utilizzato, ma sarà nuovamente necessario nelle versioni ridotte.
Il programma dispari:
G|
Hello, World!
Non Gpuò 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.