Verschieben wir den Code um die Länge der Quersumme sieht das Ganze meiner Meinung nach anders aus.
Da gibt es Zahlen die immer wiederkehren, was letztendlich bedeutet, dass er sich in einer nie endenden Schleife befindet.
Code: Alles auswählen
def shift_code(code):
summe = str(quersumme(code))
abschneiden_ab = (len(code) - len(summe)) * -1
return code[abschneiden_ab:]+summe
def quersumme(code):
return sum(map(int, code))
def change_code(code):
return shift_code(code)
def main():
alter_code = "1986"
neuer_code = alter_code
doppelt_vorkommender_code = [0 for i in range(10**len(alter_code))]
durchlauf = 0
while durchlauf < 10**len(alter_code):
durchlauf += 1
neuer_code = change_code(neuer_code)
doppelt_vorkommender_code[int(neuer_code)] += 1
if neuer_code == alter_code:
break
print("Wir haben versucht den Ausgangscode (%s) wiederzuerreichen." % alter_code)
print("Dabei wurde gezählt welche Zahl wie oft vorkam..")
print("Hier die Zahlen die öfters als einmal vorkamen:")
for nr, vorkommen in enumerate(doppelt_vorkommender_code):
if vorkommen > 1:
print("Zahl %i kommt %i mal vor" % (nr, vorkommen))
if __name__ == '__main__':
main()