Created
March 29, 2016 12:57
-
-
Save delatorremario/541efede49b22ee431fe to your computer and use it in GitHub Desktop.
Dentalink Programación
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by mario on 28/03/16. | |
*/ | |
var contador=0; | |
var N; | |
var tablero; | |
function problemaCaballoAjedrez(n,x,y) { | |
//n*n tamaño del tablero | |
N=n; | |
// x y , posicion inicial de la pieza, iniciando en fila y columna 1...n | |
tablero = creartablero(n, n, 0) | |
resolverproblema(x-1,y-1,1); | |
mostrartablero(); | |
console.log("Cantidad de veces que procesa:",contador); | |
} | |
function resolverproblema(f,c,num){ | |
contador++; | |
tablero[f][c]=num; | |
if(num===N*N) return true; | |
var posibles = buscarposibles(f,c); | |
posibles=ordenar(posibles); | |
for(var i= 0;i<posibles.length;i++){ | |
if(resolverproblema(posibles[i][0],posibles[i][1],num+1)) return true; | |
} | |
tablero[f][c]=0; | |
return true; | |
} | |
function buscarposibles(f,c){ | |
var resp=creartablero(8,2,null); | |
var pos = 0; | |
if(esvalido(f-2,c-1)){ resp[pos][0]=f-2; resp[pos++][1]=c-1; } | |
if(esvalido(f-2,c+1)){ resp[pos][0]=f-2; resp[pos++][1]=c+1; } | |
if(esvalido(f-1,c-2)){ resp[pos][0]=f-1; resp[pos++][1]=c-2; } | |
if(esvalido(f-1,c+2)){ resp[pos][0]=f-1; resp[pos++][1]=c+2; } | |
if(esvalido(f+2,c-1)){ resp[pos][0]=f+2; resp[pos++][1]=c-1; } | |
if(esvalido(f+2,c+1)){ resp[pos][0]=f+2; resp[pos++][1]=c+1; } | |
if(esvalido(f+1,c-2)){ resp[pos][0]=f+1; resp[pos++][1]=c-2; } | |
if(esvalido(f+1,c+2)){ resp[pos][0]=f+1; resp[pos++][1]=c+2; } | |
var tmp = creartablero(pos,2,null); | |
for(var i=0; i<pos; i++) { | |
tmp[i][0] = resp[i][0]; tmp[i][1]=resp[i][1]; | |
} | |
return tmp; | |
} | |
function ordenar(posibles) { | |
for(var i=0; i<posibles.length; i++) { | |
for(var j=i+1; j<posibles.length; j++) { | |
var cantposiblesI = buscarposibles(posibles[i][0], posibles[i][1]).length; | |
var cantposiblesJ = buscarposibles(posibles[j][0], posibles[j][1]).length; | |
if(cantposiblesJ<cantposiblesI) { | |
var tmp0 = posibles[i][0]; | |
posibles[i][0] = posibles[j][0]; | |
posibles[j][0] = tmp0; | |
var tmp1 = posibles[i][1]; | |
posibles[i][1] = posibles[j][1]; | |
posibles[j][1] = tmp1; | |
} | |
} | |
} | |
return posibles; | |
} | |
function esvalido(f,c){ | |
if(f<0 || f>N-1 || c<0 || c>N-1) return false; | |
if(tablero[f][c]!=0) return false; | |
return true; | |
} | |
function creartablero( rows, cols, defaultValue){ | |
var arr = []; | |
for(var i=0; i < rows; i++){ | |
arr.push([]); | |
arr[i].push( new Array(cols)); | |
for(var j=0; j < cols; j++){ | |
arr[i][j] = defaultValue; | |
} | |
} | |
return arr; | |
} | |
function mostrartablero(){ | |
tablero.forEach(function (valor) { | |
console.log( valor); | |
}) | |
console.log('------------------------') | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Created by mario on 28/03/16. | |
*/ | |
function test(number){ | |
console.log('El resultado de '+number+'! es ' + factorial(number)); | |
console.log('y contiene ' + endzeros(number) + ' ceros a la derecha'); | |
console.log('--------------------------------------------------'); | |
}; | |
function factorial(number){ | |
return number===0 && 1 || number * factorial(number-1); | |
}; | |
function endzeros(number){ | |
var count = 0; | |
for (var i=5; number/i>=1; i *= 5){ | |
count += number/i; | |
} | |
return Math.floor(count); | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title></title> | |
<script src="factorial.js" type="application/javascript"></script> | |
<script src="ajedrez.js" type="application/javascript"></script> | |
</head> | |
<body> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment