Joe è il tuo sviluppatore medio di BF. Sta per controllare le modifiche al codice nel loro repository quando riceve una chiamata dal suo capo. "Joe! La macchina del nuovo client è rotta! L'interprete brainfuck imposta tutte le celle su valori casuali prima dell'esecuzione del programma. Non c'è tempo per sistemarlo, il tuo codice dovrà occuparsene." Joe non ci pensa molto e sta per scrivere un programma per azzerare il primo milione di celle, quando il suo capo lo interrompe di nuovo - "... e non pensare di usare la forza bruta, il codice deve essere il più piccolo possibile ". Ora devi aiutare il povero Joe!
specificazioni
- Riceverai un codice brainfuck valido come input
- Il programma modificherà quindi il codice in modo che funzioni su un interprete Brainfuck randomizzato
- Ciò significa che prima dell'esecuzione del programma, le celle possono essere impostate su qualsiasi valore.
- Il nuovo programma dovrebbe avere lo stesso identico comportamento, indipendentemente dalle condizioni iniziali.
- L'interprete avrà un valore di cella max di 255 con avvolgimento e un nastro di lunghezza infinita.
punteggio
Il tuo punteggio è 10 volte la dimensione del compilatore in byte più la somma delle dimensioni del caso di test . Ovviamente vince il punteggio più basso. Per mitigare l'ottimizzazione del caso di test, mi riservo il diritto di modificare i casi di test se sospetto qualcosa, e probabilmente lo farò prima di scegliere un vincitore.
Casi test
(Ho preso questi dalla pagina esolangs e questa pagina web: http://www.hevanet.com/cristofd/brainfuck/ ). Grazie anche a @Sparr per l'ultimo caso di test.
- Ciao mondo:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Ingresso inverso:
>,[>,]<[.<]
- Poteri di due (flusso infinito):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Quadrati inferiori a 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Flusso di Fibonacci:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- Sequenza ASCII fino all'ingresso:
,[.[>+<-]>-]
(Questo richiede numeri di cella variabili in base all'ingresso)