tinha pensado em fazer isso uma vez… mas seria meio diferente… hehe
Minha ideia era colocar um comp ligado 24h (um comp meia boca, tipo pentium 1) resolvendo uma torre de hanoi de vaaarios discos (cada movimento demoraria tipo 0,5 segundo) e esse comp seria um servidorzinho web, e vc poderia ir acompanhando o progresso dele pela web… hehe
A ideia era deixar ele la, rodando durante anos… hehehe
Porque fazer isso ? Ah, sei la, por pura diversão 8)
Dennys
rs**** hehehehe
só para ver se é verdade que os 64 discos vaum para o outro pino quando o sol se apagar ou coisa assim…rs*****
own_prison
Já ouvi falar dessa torre mais naum sei exatamente como funciona a coisa… alguem poderia me explicar???
Own Prison,
Torres De Hanoi consiste num problema inventado por um matemático francês,q consiste em 3 hastes A,B e C sendo q em A existem 64 discos concentricos(do maior,na base; ao menor no topo).O problema consiste em mover os discos da haste de origem(“A”) a haste de destino “C”.Deve-se usar B como haste temporaria obedecendo 3 regras:1-nunca colocar um disco maior sobre um menor,2-Só se move um disco por vez e 3-nunca colocar o disco num outro lugar q não seja as 3 hastes.
E vc deve fazer isso com o menor numero possivel de movimentos.
Se quiser testar pra ver como funciona,faça só c/3 discos.
L
leandrolima
No livro: Java Como Programar Deitel & Deitel da editora BookMan tem uma implementação interessante das torres de Hanoi.
Infelizmente não consegui encontrar agora. Assim que achar eu fornceço.
M
mzugaib
A solução é recursividade, certo? Então tem que ter o caso básico… Qual é ele? (origem -> destino) E o que deve ser feito para chegar lá?
Ficaria assim, mais ou menos (não conferi), aonde n é o número de discos inicialmente.
transfere(n,origem,destino,auxiliar){if(n==1)// move disco da origem para o destinoSystem.out.println(origem+" -> "+destino);else{transfere(n-1,origem,auxiliar,destino);// move disco da origem para o destinoSystem.out.println(origem+" -> "+destino);transfere(n-1),auxiliar,destino,origem);}}
publicvoidinit(){prompt=newJLabel("Numero de discos: ");input=newJTextField(10);input.addActionListener(this);outputArea=newJTextArea(10,20);scroller=newJScrollPane(outputArea);Containerc=getContentPane();c.setLayout(newFlowLayout());