Stax , 11 byte (punteggio di 4)
'''cc'~~'dd
Esegui ed esegui il debug online!
È mio onore avere la prima (cronologicamente) risposta a questa sfida con un punteggio maggiore o uguale a 4. Forse il punteggio può essere ancora più alto.
In Stax, viene scritto un letterale stringa composto da un singolo carattere '
, così '', 'c, 'd, '~
come tutti i letterali stringa. I comandi corrispondenti per c
d
e ~
significano duplicare la parte superiore dello stack principale, aprire la parte superiore dello stack principale e far apparire la parte superiore dello stack principale e spingere nello stack di input, rispettivamente. Per questa sfida, lo stack di input non influisce sull'output e non è importante, quindi possiamo dire d
e ~
sono identici.
Spiegazione
È meglio dividere il codice in più parti e considerarle separatamente.
Quando non viene manomesso, '''cc
spinge un valore letterale '
e un valore letterale c
nella pila principale e duplica la parte superiore, in modo che la pila risulti (dal basso) c,c,'
.
Quando non viene manomesso, '~~
spinge il valore letterale ~
e quindi lo pop (e spinge nello stack di input), che è fondamentalmente un no-op per lo stack principale.
Quando non viene manomesso, 'dd
spinge il valore letterale d
e poi lo apre, un altro no-op per lo stack principale.
Alla fine del programma, poiché non viene eseguito alcun output esplicito, la parte superiore dello stack principale verrà stampata implicitamente.
Se il programma è in esecuzione così com'è, lo stack finale è ancora c,c,'
e verrà emesso c
.
Se la prima parte diventa ''cc
, allora abbiamo un letterale '
e due istruzioni per la copia, lo stack finale sarà ',','
. Dato che le altre due parti non sono operative, il risultato sarà '
.
Se la prima parte diventa '''c
, il risultato è sostanzialmente lo stesso con quello non manomesso, ma c
non viene duplicato. Quindi lo stack sarà c,'
. Dopo due no-op è in cima alla pila c
.
Quindi possiamo rilevare le radiazioni nella prima parte.
La seconda parte e la terza parte funzionano esattamente allo stesso modo. Prenderò la terza parte come esempio.
Se la terza parte viene manomessa, le prime due parti vengono mantenute così come sono e lo stack prima di eseguire la terza parte è c,c,'
Se la terza parte diventa 'd
, un letterale d
viene spinto in cima allo stack principale e non viene fatto altro. La parte superiore dello stack principale è ora quella d
che verrà prodotta.
Se la terza parte diventa dd
, due elementi vengono estratti dalla pila principale e ora la parte superiore della pila è '
e viene emessa.
Quindi possiamo rilevare le radiazioni nella terza parte. Per lo stesso motivo possiamo rilevare le radiazioni nella seconda parte.