Neste conjunto de exercícios, vamos "devise" um algoritmo para o problema de Hanoi Tricolor. vão existir 3 pilhas em 3 varas, cada pilha de uma cor diferente, e o problema é alternar a posição das pilhas seguindos as regras clássicas do movimento (um disco por vez, disco grande não pode ficar sobre disco pequeno).
Como nos exercícios anteriores, nossa solução vai usar três funções:
move3(n, src, mid, dst)
: move uma pilha de discos
intercalados, ie uma pilha de (n*3) discos de cores alternadas de uma
vara src
para uma vara dst
.gather()
: constrói uma pilha intercalada a partir de três
pilhas "split".scatter()
: separa uma pilha intercalada em três pilhas normais.O objetivo deste primeiro exercício na série é "devise" a função
move3()
. Esta tarefa inicial não deve segurar você muito,
na verdade. Tudo bem se sua função muda a ordem do trio de discos mais
no fundo, mas ela deve preservar a ordem dos outros trios.