Kolejny problem z analizowaniem Brainfuck, ale tym razem ... inaczej.
Pracujesz w Infinite Monkeys Incorporated, firmie produkującej programy Brainfuck, w celu rozwiązania różnych interesujących problemów (przypadkowo, nie mniej - przecież firma tworzy programy losowe). Wydaje się jednak, że twoje szybkie maszyny Turinga, które wykonują tylko Brainfuck, mają mały i kosztowny problem z błędami składniowymi - zrób je, a komputer wybuchnie. Prawdopodobnie jest to wada projektowa, ale nikt nie zadał sobie trudu, aby dowiedzieć się, dlaczego tak się dzieje.
Ponieważ maszyny Turinga (szczególnie szybkie) są drogie (w końcu mają nieskończoną pamięć RAM, która kosztuje), lepiej upewnić się, że program nie ma żadnych błędów składniowych przed wykonaniem kodu. Twoja firma uruchomi dużo kodu, więc ręczna weryfikacja nie będzie działać. Napisz program, który odczytuje STDIN dla kodu Brainfuck i kończy pracę ze statusem wyjścia ustawionym na wartość inną niż 0 (błąd), jeśli program ma jakiś błąd składniowy (na przykład
]
jest błędem składniowym, ponieważ nie ma pasującego dopasowania[
). Wyjdź ze statusem wyjścia ustawionym na 0, jeśli program działa poprawnie.Upewnij się, że Twój program poprawnie zauważa błędy dotyczące
[]
. Nie chciałbyś, żeby inny komputer wybuchł, prawda? Aha, i upewnij się, że jest tak krótki, jak to możliwe - twój szef płaci za krótkie programy (ponieważ uważa, że są one szybkie lub coś w tym rodzaju). Aha, i nie musisz kodować w Brainfuck (w rzeczywistości nie możesz, ponieważ Brainfuck nie obsługuje kodów wyjścia) - twój kod zostanie uruchomiony na normalnym komputerze.
Jak widać, Twoim zadaniem jest sprawdzenie, czy program Brainfuck jest „prawidłowy” (ma sparowane []
symbole). Pamiętaj, że programy Brainfuck mogą mieć inne znaki niż []
, więc nie odrzucaj programu tylko dlatego, że ma inne polecenia. Najmniejszy kod wygrywa, ale prawdopodobnie i tak bardziej zależy Ci na upvotes.
GCD(a,b)
zamiast 0 != a || b
.