https://turingmachinesimulator.com/shared/pkwncfhhoc?
Programm stoppt immer beim Pluszeichen. Warum? Habe den Code vorher angepasst, so dass die beiden Zahlen addiert werden.
Gebe in den Simulator 110+10 ein. Load, start
name: Addierer
init: z0
accept: zE
// Fahre nach ganz rechts auf der ersten Zahl
z0,0
z0,0,>
z0,1
z0,1,>
z0,_
z0,_,>
z0,+
z0,+,>
// Suche das Ende der zweiten Zahl
z0,-
z1,-,<
// Addiere 1
z1,0
z2,1,<
z1,1
z1,0,<
z1,_
zE,1,-
// Fahre nach ganz links und beende
z2,0
z2,0,<
z2,1
z2,1,<
z2,_
zE,_,>
z2,+ // Falls ein '+' gefunden wird, bewege nach rechts, da es bereits verarbeitet wurde
z2,+,>
// Suche das Ende der zweiten Zahl
z0,-
z1,-,<
Welche Funktion hat hier das -? Ist das Teil des Bandalphabets?
Dann muss sicherlich _ der blank sein. Aber warum läuft es beim + nicht weiter? Bzw. bei
z0,+
z0,+,>
1 Antwort
Ich denke es liegt daran, dass du immer in z0 verbleibst. Du wechselst ja nur durch ein - in z1, aber woher soll das kommen? In der Eingabe steht ja offenbar keins. Ich bin mir dessen Funktion nicht bewusst.
Ich denke eher, dass du nur über 0, 1 und + in z0 nach rechts laufen musst, und beim ersten Blank _ dann eins nach links gehslen und in z1 wechseln solltest.
(Sorry, da waren gerade paar Tippfehler drin)