Bueno, mi primer mensaje en este hilo tiene más de tres años, pero hace una semana me picó el gusanillo y estuve probando para ver si se podía hacer un toString() con las características pedidas (una semana me ha costado sacarlo
). Éstas eran:
Si toString() permite traducir de una base numérica a otra tenemos el problema de que no nos da combinación de los caracteres, es decir:
si cambiamos de base 10 a base 10 pasa esto:
0=0
1=1
.
.
8=8
9=9
10=10
11=11
evidentemente no se toca nada. Bueno, yo quería que al llegar al 10 se repitiera el 00, ya que la siguiente combinación con [0,1,2,3,4,5,6,7,8,9] después de 9 es 00, y luego 01...
0=0
1=1
.
.
8=8
9=9
10=10 <--- debería ser 00
11=11 <--- debería ser 01
12=12 <--- debería ser 02
Bueno pues después de hacer muuuuchos dolores de cabeza sólo hacia falta un toString() mejorado, un toString2():
Código PHP:
Number.prototype.toString2=function(b) {
if( 0<=this && this<b ) {
//caso directo, no hay que hacer nada, devuelve bien
res=(this).toString(b);
}
else {
//caso general
//el ultimo se mantiene como se transformaria
var ultimo=(this).toString(b);
ultimo=ultimo[ultimo.length-1];
//los primeros (sean cuantos sean) se resuelven recursivamente, hasta llegar a un caso directo
var aConvertir=parseInt(this/b)-1;
var primeros=(aConvertir).toString2(b);
res=primeros+ultimo; //siendo primeros y ultimo strings
}
return res;
}
for(var b=3, a=0;a<500; a++) {
var c=(a).toString2(b);
document.write( a+" --> "+c+"<br/>" );
}
Fijáos si era sencilla la solución (recursiva).
Bueno pues esas líneas para conseguir la recursión me han costado dos semanas.
Después de ésto, hallar la combinación número 124967 se hace con un método directo, sin tener que calcular las 124966 anteriores. Y todo esto lo aplicaremos a aquello de:
Código PHP:
var YOdevuelvo="abcdefghijklmnopqrstuvwxyz".split("");
var ELdevuelve="0123456789abcdefghijklmnop";
Para hallar la combinación número 124967 que forman las letras [abcdefghijklmnopqrstuvwxyz], así de sencillo.
Bueno, voy a dormir un rato, que el cuerpo me lo está pidiendo a voces....