Ancora un altro problema di analisi Brainfuck, ma questa volta ... diverso.
Stai lavorando nell'Infinite Monkeys Incorporated, la società che realizza programmi Brainfuck, per risolvere vari problemi interessanti (per caso, non meno - dopo tutto, la società fa programmi casuali). Tuttavia, sembra che le tue macchine Fast Turing che eseguono solo Brainfuck abbiano un piccolo e costoso problema con errori di sintassi: creane uno e il computer esplode. Probabilmente è un difetto di progettazione, ma nessuno si è preso la briga di scoprire perché ciò accada.
Dato che le macchine di Turing (specialmente quelle veloci) sono costose (dopo tutto, hanno una RAM infinita che costa), sarebbe meglio assicurarsi che il programma non abbia errori di sintassi prima di eseguire il codice. La tua azienda eseguirà un sacco di codice, quindi la verifica manuale non funzionerà. Scrivere un programma che legge STDIN per il codice Brainfuck ed esce con lo stato di uscita impostato su un valore diverso da 0 (errore) se il programma presenta un errore di sintassi (ad esempio,
]
è un errore di sintassi, perché non è presente alcuna corrispondenza[
). Esci con lo stato di uscita impostato su 0 se il programma è completamente corretto.Assicurarsi che il programma rilevi correttamente gli errori che coinvolgono
[]
. Non vorresti che un altro computer esplodesse, vero? Oh, e assicurati che sia il più breve possibile - il tuo capo paga per programmi brevi (perché pensa che siano veloci o qualcosa del genere). Oh, e non devi scrivere codice in Brainfuck (in effetti, non puoi, perché Brainfuck non supporta i codici di uscita) - il tuo codice verrà eseguito su un normale computer.
Quindi, come puoi vedere, il tuo compito è controllare se il programma Brainfuck è "valido" (ha []
simboli associati ). Nota che i programmi Brainfuck possono avere caratteri diversi da []
, quindi non rifiutare il programma solo perché ha altri comandi. Vince il codice più piccolo, ma probabilmente ti interesserà di più i voti positivi.
GCD(a,b)
posto di 0 != a || b
.