Hanoi

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.
Antworten
mo---
User
Beiträge: 3
Registriert: Donnerstag 24. Oktober 2013, 16:31

Ich habe das Hanoi-Programm schon soweit, dass es mir die Schritte ausgibt und es zeigt mir auch an von wo nach wo die Scheibe getragen werden. Ich würde gerne es soweit bekommen dass es mir zum Schluss ausgibt, welche/r Mönch/Person wie
oft eine Scheibe getragen hat. Könnt ihr mir da bitte weiterhelfen?

Code: Alles auswählen

 
i=0
def trage (Scheibe,von,nach):
    global i
    i+=1
    print "Schritte",i,":""Trage Scheibe",Scheibe,"von",von,"nach",nach
def Bewegung(Anzahl,von,nach,via):
    if Anzahl==0:
        return 0
    Bewegung(Anzahl-1,via,nach)
    trage(Anzahl,von,nach,)
    Bewegung(Anzahl-1,via,nach,von)
def main():
    Bewegung(4,"A","C","B")


if __name__ == '__main__':
    main()
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Nachdem du alle deine Beiträge in aaaa und bbbb gelöscht hast, sehen deine Chancen auf Hilfe wohl eher schlecht aus.
Das Leben ist wie ein Tennisball.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

mo--- hat geschrieben:Ich habe das Hanoi-Programm schon soweit, dass es mir die Schritte ausgibt und es zeigt mir auch an von wo nach wo die Scheibe getragen werden. Ich würde gerne es soweit bekommen dass es mir zum Schluss ausgibt, welche/r Mönch/Person wie
oft eine Scheibe getragen hat. Könnt ihr mir da bitte weiterhelfen?

Code: Alles auswählen

 
i=0
def trage (Scheibe,von,nach):
    global i
    i+=1
    print "Schritte",i,":""Trage Scheibe",Scheibe,"von",von,"nach",nach
def Bewegung(Anzahl,von,nach,via):
    if Anzahl==0:
        return 0
    Bewegung(Anzahl-1,via,nach)
    trage(Anzahl,von,nach,)
    Bewegung(Anzahl-1,via,nach,von)
def main():
    Bewegung(4,"A","C","B")


if __name__ == '__main__':
    main()
Meinst du die Anzahl der Schritte zählen?
BlackJack

@mo---: Die Anzahl der Schritte wird ja schon gezählt. Ist mit ``global`` nicht schön, da bräuchte man eigentlich schon objektorientierte Programmierung zu. (Wenn es eine halbwegs „pythonische” Lösung sein soll.)

Die Frage nach welcher Person stellt sich IMHO nicht, da dass ja *eine* Person macht. So kenne ich das jedenfalls. Ansonsten müsste man spezifizieren wie viele Personen beteiligt sind und wie die sich verhalten.

Edit: Getestet hast Du das offensichtlich nicht:

Code: Alles auswählen

Traceback (most recent call last):
  File "forum9.py", line 18, in <module>
    main()
  File "forum9.py", line 14, in main
    Bewegung(4,"A","C","B")
  File "forum9.py", line 10, in Bewegung
    Bewegung(Anzahl-1,via,nach)
TypeError: Bewegung() takes exactly 4 arguments (3 given)
Antworten