|
@@ -359,13 +359,13 @@ function movimentoFinal (haste, num) {
|
|
|
var topo = pegaTopoHaste(haste);
|
|
|
if (topo == nDiscos-1) { // moveu tudo!
|
|
|
if (haste == 2) { // moveu para haste C
|
|
|
- if (contador == potencia2(nDiscos)-1) { // moveu para haste C com minimo
|
|
|
+ if (contador == (2**nDiscos)-1) { // moveu para haste C com minimo
|
|
|
return 4;
|
|
|
}
|
|
|
return 3; // moveu para haste C mas nao e' minimo
|
|
|
}
|
|
|
if (haste == 1) { // moveu para haste B
|
|
|
- if (contador == potencia2(nDiscos)-1) { // moveu para haste B com minimo
|
|
|
+ if (contador == (2**nDiscos)-1) { // moveu para haste B com minimo
|
|
|
return 2; // msgTeste2
|
|
|
}
|
|
|
return 1; // moveu para haste C mas nao e' minimo
|
|
@@ -434,7 +434,7 @@ function movaHaste (hi) {
|
|
|
|
|
|
desenhaTudo();
|
|
|
}
|
|
|
- console.log("movaHaste(hi): final");
|
|
|
+ //console.log("movaHaste(hi): final");
|
|
|
return 1;
|
|
|
} // movaHaste(hi)
|
|
|
|
|
@@ -524,7 +524,7 @@ function desenhaDiscos () { // 'context' e' global
|
|
|
i++;
|
|
|
ind_disco = matHastes[2][i];
|
|
|
}
|
|
|
- console.log("desenhaDiscos(): final");
|
|
|
+ //console.log("desenhaDiscos(): final");
|
|
|
} // desenhaDiscos()
|
|
|
|
|
|
|
|
@@ -542,7 +542,7 @@ function desenhaMensagem () {
|
|
|
|
|
|
// Redesenha tudo
|
|
|
function desenhaTudo () {
|
|
|
- console.log("desenhaTudo(): inicio");
|
|
|
+ //console.log("desenhaTudo(): inicio");
|
|
|
context.font = 'bold 20px serif';
|
|
|
context.drawImage(imgFundo, 0, 0, width, height );
|
|
|
context.fillStyle = "white";
|
|
@@ -563,7 +563,7 @@ function desenhaTudo () {
|
|
|
context.fillText(" " + mensagem, txtMX, txtMY); // mensagens
|
|
|
context.fillText(" " + mensagemNM + contador, txtNMX, txtNMY); // numero de movimentos
|
|
|
desenhaDiscos();
|
|
|
- console.log("desenhaTudo(): final");
|
|
|
+ //console.log("desenhaTudo(): final");
|
|
|
} // desenhaTudo()
|
|
|
|
|
|
|
|
@@ -581,19 +581,33 @@ function resolveAutomatico (n, origem, destino, aux) {
|
|
|
if (n == 1) { // O menor disco (1) se move livremente em qualquer haste
|
|
|
movaHaste(origem);
|
|
|
movaHaste(destino);
|
|
|
+ console.log("Moveu de " + origem + " para " + destino);
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
- resolveAutomatico(n - 1, origem, aux, destino); // Retirar discos menores do caminho
|
|
|
+ //resolveAutomatico(n - 1, origem, aux, destino); // Retirar discos menores do caminho
|
|
|
+ console.log("Primeiro resolve com n = " + (n - 1));
|
|
|
+ setTimeout(resolveAutomatico, 100 * (potencia2(n) - 1), n - 1, origem, aux, destino);
|
|
|
+ sleep(100 * (potencia2(n) - 1));
|
|
|
+
|
|
|
movaHaste(origem);
|
|
|
movaHaste(destino); // Mover maior disco para o destino
|
|
|
- resolveAutomatico(n - 1, aux, destino, origem); //Mover os discos menores para cima do maior novamente
|
|
|
+ console.log("Moveu de " + origem + " para " + destino);
|
|
|
+ //sleep(1000);
|
|
|
+
|
|
|
+ //resolveAutomatico(n - 1, aux, destino, origem); //Mover os discos menores para cima do maior novamente
|
|
|
+ console.log("Segundo resolve com n = " + (n - 1));
|
|
|
+ setTimeout(resolveAutomatico, 100 * (potencia2(n) - 1), n - 1, aux, destino, origem);
|
|
|
+ sleep(100 * (potencia2(n) - 1));
|
|
|
}
|
|
|
+let mov = [];
|
|
|
|
|
|
// Verifica posicao dos discos e chama a funcao recursiva
|
|
|
function preparaAutomatico ()
|
|
|
{
|
|
|
reiniciar(nDiscos); //formula nao funciona caso os discos estejam desorganizados
|
|
|
resolveAutomatico(nDiscos, 0, 2 ,1);
|
|
|
+ console.log(mov);
|
|
|
}
|
|
|
// -------------------- FIM DA ATUALIZACAO --------------------
|
|
|
|