Solo necesita seguir la misma idea para crear un algoritmo que resuelva ese problema.
Su código comienza con la idea de cómo mover el disco N de la clavija a la clavija utilizando una tempPeg.
La definición recursiva es mover discos N-1 de Peg tempPeg aPeg. Todos estos movimientos no interferirán con el disco N sin mover y dejarán el toPeg libre. Mueva el disco N (dePeg-> aPeg) y luego mueva los discos N-1 de tempPeg a toPeg. Como todos son más pequeños que N, estás a salvo.
- ¿Qué están resolviendo realmente los mineros de Bitcoin? ¿Qué tipo de problemas matemáticos están resolviendo y qué logran al resolverlos?
- ¿Existen los números irracionales que no son construibles en la recta numérica real?
- Cómo escribir un programa en Java para encontrar la suma de números primos de menos de 2 millones
- ¿Cómo convertiría estos datos matemáticos a la función por partes?
- ¿Se puede producir música usando las matemáticas? En caso afirmativo, ¿cómo?
Por lo tanto, debe agregar más casos, al menos, encontrar una solución. Si desea mover N discos de A a C usando B como temp. Si N = 1. A-> B, B-> C son tus movimientos. De lo contrario, divida sus movimientos de discos N-1 de A a C. A-> B. N-1 de C a A. B-> C. N-1 A a C.
http://g.recordit.co/4enpMkQ5Ep.gif (sin restricciones)
http://g.recordit.co/8Swy1CBAdJ.gif (evitando movimientos A-> C, C-> A)
Forzar solo movimientos de clavija adyacentes aumentará mucho la cantidad de movimientos necesarios.
discos, # movimientos sin restricciones, # movimientos evitando CA y CA
1,1,2
2,3,8
3,7,26
4,15,80
5,31,242
6,63,728
7,127,2186
8.255,6560