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.