Zadanie
Napisać Maszynę Turinga.
Przyjmujemy następujący format pliku upisujący automat i jego stan początkowy:
linia 1: n - ilosc wierszy opisujacych automat
linia 2: pierwszy wiersz opisujacy automat; instrukcja 1
...
linia n+1: n-ty wiersz opisujacy automat; instrukcja n
linia n+2: poczatkowy stan tasmy (nie dluzszy jak 255 znakow)
linia n+3: indeks pozycji na tasmie od ktorej rozpoczynamy dzialanie
Dodatkowo przyjmujemy, że stanem początkowym maszyny jest stan 0 a puste pole na taśmie oznaczamy symbolem '_' (znak podkreślenia). Format instrukcji jest taki jak ponżej:
sb os sn zs rg i
gdzie:
- sb - stan bieżący (liczby całkowite)
- os - odczytany symbol (jeden znak alfanumeryczny)
- sn - stan do którego przechodzimy (jak stan bieżący)
- zs - co zapisujemy pod głowicą zanim ją ewentualnie przesuniemy (jak odczytany symbol)
- rg - w którą stronę przesuniemy głowicę (L - lewo, P - prawo, 0 - bez zmian
- i - o ile znaków przesuwamy głowicę (liczba całkowita; występuje zawsze nawet gdy rg=0)
Stanem końcowym, czyli takim, w którym program kończy działanie jest zawsze stan o największym numerze. Program ma wykonywać maksymalnie zadaną przez użytkownika ilość kroków. Efekt wykonania każdego kroku zapisywany jest do pliku.
Przykład 1
Plik:
4
0 - 0 * P 1
0 * 0 - P 1
0 k 1 k 0 0
1 - 1 - 0 0
--**-*-*-**-**-
7
Efekt wykonania 5 kroków
111111
123456789012345
--**-*-*-**-**-
krok 1: --**-***-**-**-
krok 2: --**-**--**-**-
krok 3: --**-**-***-**-
krok 4: --**-**-*-*-**-
krok 5: --**-**-*---**-
Moje rozwiązanie
Plik testowy 1