vrijdag 4 juli 2026
# Voorbeeld uit Turing, A.M. On computable numbers, etc. Proceedings of the London Mathematical Society, 1936.
# Positie telt vanaf 1 in uitvoer (intern vanaf 0)
g = [None] # Start inhoud van geheugen
p = 0 # Start positie in geheugen
s = "b" # Start status
n_max = 5 # Aantal uit te voeren operaties
n = 0
def r(geheugen, positie):
positie +=1
if positie > len(geheugen) - 1:
geheugen.append(None)
print(" R uitgevoerd.\n Geheugen: " + str(geheugen) + "\n Omvang: " + str(len(geheugen)) + "\n Positie: " + str(positie + 1))
else:
print(" R uitgevoerd.\n Positie: " + str(positie + 1))
return geheugen, positie
def l(geheugen, positie):
positie -= 1
if positie < 0:
raise Exception("Verder terug dan positie 1 kan niet")
print(" L uitgevoerd.\n Positie: " + str(positie + 1))
return geheugen, positie
def lees(geheugen, positie):
symbool = geheugen[positie]
print(" Lees symbool: " + str(symbool) + " op positie: " + str(positie + 1))
return symbool;
def schrijf(geheugen, positie, symbool):
geheugen[positie] = symbool;
print(" Schrijf symbool: " + str(symbool) + " op positie: " + str(positie + 1) + "\n Geheugen: " + str(geheugen) + "\n Positie: " + str(positie + 1))
return geheugen, positie
def wis(geheugen, positie):
schrijf(geheugen, positie, None);
print(" Wis uitgevoerd.\n Geheugen: " + str(geheugen) + "\n Positie: " + str(positie + 1))
return geheugen, positie
def ga_naar_status(status, nieuwe_status):
if status == nieuwe_status:
print(" Behoud status: " + nieuwe_status)
else:
print(" Ga naar status: " + nieuwe_status)
status = nieuwe_status
return status
def op(geheugen, positie, status, n):
print("Start operatie " + str(n + 1))
symbool = lees(geheugen, positie)
if status == "b":
geheugen, positie = schrijf(geheugen, positie, "a")
geheugen, positie = r(geheugen, positie)
geheugen, positie = schrijf(geheugen, positie, "a")
geheugen, positie = r(geheugen, positie)
geheugen, positie = schrijf(geheugen, positie, 0)
geheugen, positie = r(geheugen, positie)
geheugen, positie = r(geheugen, positie)
geheugen, positie = schrijf(geheugen, positie, 0)
geheugen, positie = l(geheugen, positie)
geheugen, positie = l(geheugen, positie)
status = ga_naar_status(status, "o")
elif status == "o":
if symbool == 1:
geheugen, positie = r(geheugen, positie)
geheugen, positie = schrijf(geheugen, positie, "x")
geheugen, positie = l(geheugen, positie)
geheugen, positie = l(geheugen, positie)
geheugen, positie = l(geheugen, positie)
status = ga_naar_status(status, "o")
elif symbool == 0:
status = ga_naar_status(status, "q")
else:
raise Exception("Symbool 0 of 1 verwacht. Aangetroffen: " + str(symbool))
elif status == "q":
if symbool == 0 or symbool == 1:
geheugen, positie = r(geheugen, positie)
geheugen, positie = r(geheugen, positie)
status = ga_naar_status(status, "q")
elif symbool == None:
geheugen, positie = schrijf(geheugen, positie, 1)
geheugen, positie = l(geheugen, positie)
status = ga_naar_status(status, "p")
else:
raise Exception("Symbool 0, 1 of None verwacht. Aangetroffen: " + str(symbool))
elif status == "p":
if symbool == "x":
geheugen, positie = wis(geheugen, positie)
geheugen, positie = r(geheugen, positie)
status = ga_naar_status(status, "q")
elif symbool == "a":
geheugen, positie = r(geheugen, positie)
status = ga_naar_status(status, "f")
elif symbool == None:
geheugen, positie = l(geheugen, positie)
geheugen, positie = l(geheugen, positie)
status = ga_naar_status(status, "p")
else:
raise Exception("Symbool x, a of None verwacht. Aangetroffen: " + str(symbool))
elif status == "f":
if symbool == None:
geheugen, positie = schrijf(geheugen, positie, 0)
geheugen, positie = l(geheugen, positie)
geheugen, positie = l(geheugen, positie)
status = ga_naar_status(status, "o")
else:
geheugen, positie = r(geheugen, positie)
geheugen, positie = r(geheugen, positie)
status = ga_naar_status(status, "f")
else:
raise Exception("Onbekende status aangetroffen: " + str(status))
n += 1
return geheugen, positie, status, n
print("Start situatie\n Geheugen: " + str(g) + "\n Omvang: " + str(len(g)) + "\n Positie: " + str(p + 1) + "\n Status: " + s)
while n < n_max:
g,p,s,n = op(g,p,s,n)
print("Eind situatie\n Geheugen: " + str(g) + "\n Omvang: " + str(len(g)) + "\n Positie: " + str(p + 1) + "\n Status: " + s)