AUFGABE: Jeden tag eine Änderung des Bankcodes...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
sebastian0202
User
Beiträge: 168
Registriert: Montag 9. Mai 2016, 09:14
Wohnort: Berlin

Die vier Regeln gelten doch nur, weil wir den Code immer nur um eine Stelle verschieben.
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()

Antworten