Turnurile din Hanoi este un joc matematic sau, dacă vreți, un puzzle. Este format din trei tije A
, B
și C
și un număr variabil de discuri, de diferite diametre. Inițial discurile sunt așezate în ordine descrescătoare a diametrelor pe tija A
, de la vârf către bază, astfel încât să formeze un turn.
Scopul jocului este acela de a muta toate discurile de pe tija A
pe tija C
folosind ca tijă intermediară tija B
, respectând următoarele reguli:
- la un moment dat doar un singur disc poate fi mutat
- fiecare mutare constă în luarea celui mai de sus disc de pe o tija și mutarea acestuia pe o altă tijă
- un disc cu diametrul mai mare nu poate fi poziționat deasupra unui disc cu diametrul mai mic.
Cerința
Dacă se cunoaște numărul n
de discuri aflate pe tija A
, să se determine șirul mutărilor necesare pentru ca toate discurile să fie mutate pe tija C
.
Date de intrare
Fișierul de intrare hanoi.in
conține pe prima linie numărul natural nenul n
, ce reprezintă numărul de discuri aflat pe tija A
.
Date de ieșire
Fișierul de ieșire hanoi.out
va conține pe prima linie numărul m
, ce reprezintă numărul minim de mutări ce se efectuează. Pe următoarele m
linii vor fi scrise mutările sub forma: tija sursă->tija destinație.
Restricții și precizări
1 ≤ n ≤ 15
- mutările vor fi scrise câte una pe linie, fără spații
Exemplu:
hanoi.in
2
hanoi.out
3 A->B A->C B->C