1
resposta

Desafio hanoi com disposições distintas

Olá, estava fazendo um desafio para torre de hanoi que consiste em passar os discos da torre A para C sendo o total de 3 torres A, B e C e só pode mover um disco de cada vez e os discos sendo de diâmetros distintos nunca pode um disco com diâmetro maior ficar em cima do menor, segue uma exemplificação: http://www.texample.net/media/tikz/examples/PDF/towers-of-hanoi.pdf, mas me deparei com o seguinte problema: o programa deve receber a torre com disposições diferentes e reorganizá-los para uma torre definida, por exemplo ao receber A[4, 3, 2, 1] B[ ] C[ ] posso definir para o programa usando recursão reorganizar em C e no final ele chegar a A[ ] B [ ] C[4, 3, 2, 1] mas se eu receber por exemplo A[2, 1] B[4] C[3] e for reorganizar como posso fazer? Eu fiz o seguinte código usando ruby:

A = [4, 3, 2, 1]
B = []
C = []

def move(n, origem, destino, aux)
    if n > 0
        move(n - 1, origem, aux, destino)

        destino << origem.pop

        print A, B, C, "\n"

        move(n - 1, aux, destino, origem)
    end
end

move(4, A, C, B)

No caso estou usando 4 discos, e funciona quando eu tenho todos os discos dispostos todos em A, mas se for qualquer outra disposição deve ser feito de outra forma que não estou enxergando, a exemplo que já dei A[2, 1] B[4] C[3], pois dessa forma o programa já não atende. Sendo assim, como pode ser resolvido?

1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software