Python, utilice la programación de algoritmos recursivos para resolver el problema de la Torre de Hanoi esperando en línea.
Este es un ejemplo que viene con el sistema Python3. Esto es probablemente lo que significa. Originalmente tenía 6 placas, pero se cambió a 4 según su solicitud.
No hay ningún problema con el algoritmo recursivo y la descripción es muy detallada;) #!/usr/bin/env?python3
from?turtle?import?*
class? Disco(Tortuga):
def?__init__(self, ?n):
Tortuga.__init__(self, ?shape="cuadrado", ?visible=False)
self.pu()
self.shapesize(1.5,?n*1.5,?2)?#?square--gt;rectangle
self.fillcolor( n/6.,? 0,?1-n/6.)
self.st()
clase?Torre(lista):
" ¿Torre de Hanoi,?una ?subclase?de?lista?de?tipos?integrada"
def?__init__(self, ?x):
"crear?una?torre?vacía? torre.?x?es ?x-posición?de?peg"
self.x?=?x
def?push(self,?d):
d.setx (self.x)
d.sety(-150 34*len(self))
self.append(d)
def?pop(self ):
d?=?list.pop(self)
d.sety(150)
return?d p>
def ?hanoi(n,?from_,?with_,?to_):
if?n?gt;?0:
hanoi(n-1, ?from_,?to_, ?with_)
to_.push(from_.pop())
hanoi(n-1, ?with_, ?from_, ?to_) p>
def ?play():
onkey(Ninguno, "espacio")
clear()
prueba:
hanoi(6, ?t1,?t2,?t3)
write("presione?STOP?botón?para?salir", align="center",?font=("Mensajero", ?16,?"bold "))
excepto?Terminator:
pasar?#?turtledemo?user?pressed?STOP
def?main() :
global?t1,?t2,?t3
ht();?penup();?goto(0,?-225)#?escritor?tortuga
t1?=?Torre(-250)
t2?=?Torre(0)
t3?=?Torre(250)
#?hacer?torre? de?6?discos
para?i?en?rango(4,0,-1):
t1.push(Disco(i))
#?preparar?spartanic?user?interfaz?;-)
escribir("presionar?barra espaciadora?para?iniciar?ga
yo", align="center",?font=("Courier",?16,?"bold"))
onkey(play,?"space")
escucha ()
return?"EVENTLOOP"
if?__name__=="__main__":
msg?=?main()
imprimir(msj)
bucle principal()