Symulator Maszyny Turinga Maszyna Turinga to siódemka (Q, Gamma, Sigma, b, delta, q_s, Q_F), gdzie * Q to zbiór stanów, * Gamma to alfabet taśmy, * Sigma to alfabet wejścia, * 'b' to symbol wypełniacza (blank), * delta to funkcja przejścia z Q x Gamma do Q x Gamma x {L,S,R}, * q_s to stan startowy, * Q_F to podzbiór stanów końcowych. Napisz symulator maszyny Turinga, który na wejściu otrzymuje plik z maszyną i taśmą (skończoną jej częścią, która z obydwu stron uzupełniona jest nieskończonym ciągiem wypełniaczy). Przyjmujemy, że maszyna staruje na pierwszym symbolu na tasmie który nie jest blankiem. Symulator powinien prezentować aktualny stan taśmy, instrukcję wykonywaną, powinien pozwalać na "przewijanie" symulacji do przedu i do tyłu. Przyjmujemy że symbol blank to '-' (znak myślnika). Alfabet taśmy to suma [a-z], [A-Z] i [0-9] oraz '-'. Nazwy stanów to dowolne (niepuste) słowa nad [a-zA-Z]. W pierwszej linii wejścia podany jest stan startowy. W drugiej linii wejścia ciąg stanów końcowych (oddzielonych spacją). W kolejnych liniach znajdują się instrukcje funkcji przejścia (stan maszyny, symbol pod głowicą, nowy stan maszyny, nowy symbol, ruch głowicy). Po jednej pustej linii znajduje się taśma wejściowa dla podanej maszyny. Przykładowe wejście: A B A 1 A 0 R A 0 A 1 R A - B - S 01101100011