BuK/IIm20/Vorlesung 8 Seidl
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Python</language>
=== S. 4 ===
[[Bild:Fseidl_20210515_151715.jpg]]
[[Bild:Fseidl_20210515_151731.jpg]]
=== S. 11 ===
<code id="609fcbfe9c7ff">
import itertools
# A Generator
alphabet = ["a", "b", "c"]
def a(alphabet):
for i in range(0, len(alphabet)+1):
for word in itertools.product(alphabet, repeat=i):
yield word
def wort_index(buchstabe, wort):
for i, w in enumerate(a(wort)):
if len(w) != 1:
continue
if w[0] == buchstabe:
return i
# Primzahl Generator
def primzahl_generator(n):
while True:
if ist_primzahl(n):
yield n
n += 1
def ist_primzahl(n):
if n == 2:
return True
for i in range(2, n):
if n % i == 0:
return False
return True
# Gödelnummer
def get_goedelnummer(wort):
elemente = []
for i_b, buchstabe in enumerate(wort):
primzahl = -1
for i_p, p in enumerate(primzahl_generator(2)):
primzahl = p
if i_b == i_p:
break
xi = wort_index(buchstabe, wort)
elemente.append(primzahl**xi)
produkt = 1
for faktor in elemente:
produkt = faktor * produkt
return produkt
# Reverse Gödelnummer (Holzhammer)
def wort_von_goedelnummer(n):
for w in a(alphabet):
goedelnummer = get_goedelnummer("".join(w))
if goedelnummer == n:
return "".join(w)
</code>
<run id="609fcbfe9c86d">
print(get_goedelnummer("aba"))
print(wort_von_goedelnummer(90))
</run>