Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions analizador.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@

class Analizador{
constructor(){
}


static Analisis(cadena){
let resultados = new Object();
resultados.coord1x = "";
resultados.coord1y = "";
resultados.coord1txt = "";
resultados.coord2x = "";
resultados.coord2y = "";
resultados.coord2txt = "";
resultados.coord3x = "";
resultados.coord3y = "";
resultados.coord3txt = "";

let str = String(cadena);
let len = str.length;
let params = 0;
let is_param = false;
for(let i=0; i<len; i++){
if( str.charAt(i) == '('){
is_param = true;
}
else if( (str.charAt(i) == ')' || str.charAt(i) == ',') && is_param ){
if(str.charAt(i) == ')'){
is_param = false;
}
params++;
}
else if(isNaN(str.charAt(i)) && is_param){
is_param = false;
}
else if(!isNaN(str.charAt(i)) && is_param){
switch(params){
case 0:
resultados.coord1x += String(str.charAt(i));
break;
case 1:
resultados.coord1y += String(str.charAt(i));
break;
case 2:
resultados.coord2x += String(str.charAt(i));
break;
case 3:
resultados.coord2y += String(str.charAt(i));
break;
case 4:
resultados.coord3x += String(str.charAt(i));
break;
case 5:
resultados.coord3y += String(str.charAt(i));
break;
}

}
else{
switch(params){
case 2:
resultados.coord1txt+=String(str.charAt(i));
break;
case 4:
resultados.coord2txt+=String(str.charAt(i));
break;
case 6:
resultados.coord3txt+=String(str.charAt(i));
break;
}
}


}
return resultados;
}

}


let entrada = process.argv[2];//se adquiere la cadena a analizar por parametro
let resultados = Analizador.Analisis("(12324,432)dsajjkasw(54,23423)eqwmk(7753,8876)dsad");
console.log("("+resultados.coord1x+","+resultados.coord1y+") "+resultados.coord1txt+"\n");
console.log("("+resultados.coord2x+","+resultados.coord2y+") "+resultados.coord2txt+"\n");
console.log("("+resultados.coord3x+","+resultados.coord3y+") "+resultados.coord3txt);
52 changes: 52 additions & 0 deletions capicua.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@

class Capicua {
constructor (){
}
static Inversor(x){//Funcion utilizada para obtener un numero deseado a la inversa
var len = String(x).length;
var invertido = "";
while(len >= 0){
invertido = invertido + String(x).charAt(len);
len--;
}
return invertido;
}
static Revision(x){//Funcion que revisa si un numero se lee igual al derecho que al reves
let inicio = 0;//apuntador para el caracter inferior
let final = String(x).length-1;//apuntador para el caracter superior
let bandera = true;
let medio = Math.ceil(String(x).length/2);
for(let i=0; i< medio; i++ ){//Solo se hace el for hasta la mitad de la cadena, ya que no se necesita más
if(String(x).charAt(inicio) == String(x).charAt(final)){//se comparan los caracteres
inicio++;
final--;
}
else{
bandera = false;//se modifica la bandera y se rompe el ciclo en caso de no ser iguales los caracteres
break;
}
}
return bandera;
}
static EncontrarCapicua(nc){
let i = 0;//se inicia un contador
let capicua = nc;
let bandera = true;//bandera para salir del ciclo una vez encontrado el capicua
while(bandera){
capicua = parseInt(capicua) + parseInt(Capicua.Inversor(String(capicua)));//se suma el numero con su inverso
if(Capicua.Revision(String(capicua))){//si el resultado es capicua, se rompe el ciclo
bandera = false;
}
i++;
}
var Resultado = new Object();
Resultado.NC = capicua;//se guarda el capicua y las iteraciones en un objeto y se regresan
Resultado.iteraciones = i;
return Resultado;
}
}


let entrada = process.argv[2];//se adquiere el numero parametro
let resultado = Capicua.EncontrarCapicua(entrada);//se guardan los resultados en una variable
console.log(resultado.NC+" "+resultado.iteraciones);//impresion de los resultados