Aceto , 19 17 byte non concorrenti
Nuova versione (17 byte):
Questa nuova versione prende i personaggi uno alla volta e viene eseguita al meglio con l' -F
opzione. Funziona in modo simile, ma non identico alla soluzione precedente:
>,
Op0
p|1u
,ip^
Vecchia risposta (19 byte):
(Non competitiva perché ho dovuto correggere due bug nell'interprete)
|p1u
iOp<
|!`X
rd!r
Questa è la prima risposta di Aceto che evidenzia cosa può fare relativamente bene, direi. Gli "elenchi" sono flussi di input, con un input per riga, "1" per true e "0" per false, con una stringa vuota che indica la fine dell'elenco.
I programmi Aceto vengono eseguiti su una curva di Hilbert, iniziando in basso a sinistra e terminando in basso a destra. Per prima cosa, noi r
leggiamo una stringa, la d
potenziamo e la neghiamo ( !
), trasformando le stringhe vuote in Vero, tutto il resto in Falso. Quindi c'è uno specchio orizzontale condizionale ( |
): se l'elemento superiore nella pila è vero, rispondi orizzontalmente. Questo succede quando la stringa era vuota. Se facciamo il mirroring, atterriamo sul X
, che uccide l'interprete.
Altrimenti, convertiamo la copia rimanente nello stack in un numero i
intero e facciamo un altro mirror orizzontale condizionale: Questa volta, poiché 1 è verità e 0 è falsa, rispecchiamo se vediamo il (primo) valore vero. Se non eseguiamo il mirroring (quindi abbiamo visto uno 0) p
rintingiamo ciò che è nello stack (poiché lo stack è vuoto, uno zero) e saltiamo O
all'origine della curva, da dove abbiamo iniziato, avviando di nuovo l'intero processo.
Altrimenti, quando abbiamo visto un 1, ci specchiamo e atterriamo sul u
, che inverte la direzione in cui ci muoviamo sulla curva di Hilbert. 1p
stampa un 1, e ora continuiamo lo stesso O
che avremmo fatto se avessimo visto uno 0, ma poiché siamo in "modalità inversa", la nostra origine è in basso a destra , quindi saltiamo lì.
Ora r
suoniamo un'altra stringa e la neghiamo. Se la stringa era vuoto, e quindi l'elemento pila superiore è truthy, `
sarà non sfuggire il comando successivo ( X
), facendoci smesso.
In caso contrario (se la stringa non era vuoto), ci facciamo sfuggire l' X
e ignoriamo. In tal caso, andiamo a sinistra ( <
), p
rint 0 (perché lo stack è vuoto) e torniamo indietro a O
rigin.