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 seguindo 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,
p.ex. 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 o deve segurar muito, na
verdade. Tudo bem se a sua função muda a ordem do trio de discos mais no
fundo, mas ela deve preservar a ordem dos outros trios.