Otro problema de análisis de Brainfuck, pero esta vez ... diferente.
Estás trabajando en Infinite Monkeys Incorporated, la compañía que desarrolla los programas Brainfuck, para resolver varios problemas interesantes (por accidente, nada menos, después de todo, la compañía hace programas aleatorios). Sin embargo, parece que las máquinas rápidas de Turing que solo ejecutan Brainfuck tienen un pequeño y costoso problema con los errores de sintaxis: crea uno y la computadora explota. Probablemente sea un defecto de diseño, pero nadie se había molestado en descubrir por qué sucede.
Como las máquinas de Turing (especialmente las rápidas) son caras (después de todo, tienen RAM infinita que cuesta), sería mejor asegurarse de que el programa no tenga errores de sintaxis antes de ejecutar el código. Su empresa ejecutará mucho código, por lo que la verificación manual no funcionará. Escriba un programa que lea el STDIN para el código Brainfuck y salga con el estado de salida establecido en cualquier cosa que no sea 0 (error) si el programa tiene algún error de sintaxis (por ejemplo,
]
es un error de sintaxis, porque no hay coincidencia[
). Salga con el estado de salida establecido en 0 si el programa está completamente bien.Asegúrese de que su programa advierta correctamente los errores relacionados
[]
. No querrías que explotara otra computadora, ¿verdad? Ah, y asegúrese de que sea lo más breve posible: su jefe paga los programas cortos (porque cree que son rápidos o algo así). Ah, y no tiene que codificar en Brainfuck (de hecho, no puede, porque Brainfuck no admite códigos de salida): su código se ejecutará en una computadora normal.
Entonces, como puede ver, su trabajo es verificar si el programa Brainfuck es "válido" (tiene []
símbolos emparejados ). Tenga en cuenta que los programas Brainfuck pueden tener otros caracteres que []
no sean , así que no rechace el programa solo porque tiene otros comandos. El código más pequeño gana, pero de todos modos probablemente te interesarían más los votos a favor.
GCD(a,b)
lugar de 0 != a || b
.