La tua sfida è minimizzare il codice Brainfuck , secondo queste regole:
- Rimuovi tutto ciò che non fa parte di
+-><[].,
. - Per qualsiasi gruppo di consecutivi
+
o-
caratteri, se la quantità di+
s ed-
s è la stessa, rimuoverli. - Fai come sopra, ma con
>
e<
. - Rimuovi le sequenze dei
+-><
personaggi se non fanno nulla. Ad esempio, è necessario rimuovere+>-<->+<
. (Questa potrebbe essere la più difficile e la più difficile da implementare.) Assicurati di non avere falsi positivi, come+>-<+>-<
, che non dovrebbero essere rimossi.
Casi test:
Ingresso
++++++[->++++++<]>. prints a $
[-]< resets tape
>,[>,]<[.<] reverses NUL terminated input string
++-->><< does nothing
Produzione
++++++[->++++++<]>.[-],[>,]<[.<]
Ingresso
Should disappear: ++>>+<+++<->-->-<<->-<
Should disappear: +++>-<--->+<
Should stay: +++>-<+>---<
Produzione
+++>-<+>---<
Puoi accettare input e output come preferisci - stdin / stdout, una funzione, ecc., Ma l'input potrebbe non essere codificato.
Questo è code-golf , quindi vincerà il codice più breve nel conteggio dei caratteri.
+++>-<+>---<
? Può essere abbreviato per evitare inutili movimenti del puntatore, ma l'output previsto lo lascia invariato. La mia comprensione basata sull'esame sia della domanda che delle risposte è che Doorknob è forte con le specifiche prese in modo impreciso; dobbiamo eliminare le +-><
sequenze contigue non operative come esplicitamente dichiarato, e oltre a ciò è lecito fare una minimizzazione extra come nel tuo esempio ++>>++<<--
, e possiamo anche fare riorganizzazioni purché non cambino la funzionalità del codice, ad es. >+<+
in +>+<
.
+>-<->+<
. (Potrebbe essere il più difficile e difficile da implementare.) Assicurati di non avere falsi positivi, come +>-<+>-<
, che non dovrebbe essere rimosso. " - Questo è un po 'vago
++>>++<<--
dovrebbe produrre>>++<<
, e questo non è stato coperto. Aggiungi altri casi di test.