Joe es tu desarrollador promedio de BF. Está a punto de revisar los cambios de su código en su repositorio cuando recibe una llamada de su jefe. "¡Joe! ¡La máquina del nuevo cliente está rota! El jodido intérprete establece todas las celdas en valores aleatorios antes de la ejecución del programa. No hay tiempo para arreglarlo, tu código tendrá que lidiar con eso". Joe no piensa mucho en eso, y está a punto de escribir un programa para poner a cero el primer millón de celdas, cuando su jefe lo interrumpe nuevamente - "... y no piense en usar la fuerza bruta, el código tiene que ser lo más pequeño posible ". ¡Ahora tienes que ayudar al pobre Joe!
Especificaciones
- Obtendrá un código válido de brainfuck como entrada
- Su programa luego modificará el código para que funcione en un intérprete aleatorio brainfuck
- Esto significa que antes de la ejecución del programa, las celdas se pueden establecer en cualquier valor.
- El nuevo programa debe tener exactamente el mismo comportamiento sin importar las condiciones iniciales.
- El intérprete tendrá un valor máximo de celda de 255 con envoltura y una cinta de longitud infinita.
Puntuación
Su puntaje es 10 veces el tamaño del compilador en bytes más la suma de los tamaños de los casos de prueba . Obviamente, el puntaje más bajo gana. Para mitigar la optimización de casos de prueba, me reservo el derecho de cambiar los casos de prueba si sospecho algo, y probablemente lo haré antes de elegir un ganador.
Casos de prueba
( Obtuve esto de la página de esolangs y esta página web: http://www.hevanet.com/cristofd/brainfuck/ ). También gracias a @Sparr por el último caso de prueba.
- Hola Mundo:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Entrada inversa:
>,[>,]<[.<]
- Poderes de dos (flujo infinito):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Cuadrados menores de 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Corriente de Fibonacci:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- Secuencia ASCII hasta la entrada:
,[.[>+<-]>-]
(esta requiere números de celda variables según la entrada)