Mais um problema de análise de Brainfuck, mas desta vez ... diferente.
Você está trabalhando na Infinite Monkeys Incorporated, a empresa que faz os programas Brainfuck, para resolver vários problemas interessantes (por acidente, nada menos - afinal, a empresa faz programas aleatórios). No entanto, parece que suas máquinas rápidas de Turing que executam apenas o Brainfuck têm um problema pequeno e caro com erros de sintaxe - crie uma e o computador exploda. Provavelmente é uma falha de design, mas ninguém se deu ao trabalho de descobrir por que isso acontece.
Como as máquinas de Turing (especialmente as mais rápidas) são caras (afinal de contas, elas têm RAM infinita que custa), seria melhor garantir que o programa não tenha nenhum erro de sintaxe antes de executar o código. Sua empresa executará muitos códigos, portanto a verificação manual não funcionará. Escreva um programa que leia o código STDIN para Brainfuck e saia com o status de saída definido como algo diferente de 0 (erro) se o programa tiver algum erro de sintaxe (por exemplo,
]
é um erro de sintaxe, porque não há correspondência[
). Saia com o status de saída definido como 0 se o programa estiver completamente correto.Verifique se o seu programa percebe corretamente os erros envolvidos
[]
. Você não gostaria que outro computador explodisse, queria? Ah, e verifique se é o mais curto possível - seu chefe paga por programas curtos (porque ele acha que eles são rápidos, ou algo assim). Ah, e você não precisa codificar no Brainfuck (na verdade, não pode, porque o Brainfuck não suporta códigos de saída) - seu código será executado no computador normal.
Portanto, como você pode ver, seu trabalho é verificar se o programa Brainfuck é "válido" (possui []
símbolos emparelhados ). Observe que os programas Brainfuck podem ter outros caracteres além de []
, portanto, não recuse o programa apenas porque possui outros comandos. O menor código vence, mas provavelmente você se importaria mais com upvotes.
GCD(a,b)
vez de 0 != a || b
.