Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Mi solución al desafío.

Tal vez me compliqué demasiado pero al parecer funciona y cumple con el objetivo del desafío. Tengo dudas de si cubre la totalidad del rango de 1 a 100 pero al parecer sí.

//Variables
let numeroSecreto = Math.floor(Math.random()*10)*10+1 * Math.floor(Math.random()*10) ;
let numeroUsuario = 0;
let intentos = 1;
//let palabraVeces = 'vez';
let maximosIntentos = 10;


while (numeroUsuario != numeroSecreto) {
    numeroUsuario = parseInt(prompt("Me indicas un número entre 1 y 100 por favor:"));

    console.log(typeof(numeroUsuario));
    if (numeroUsuario == numeroSecreto) {
        //Acertamos, fue verdadera la condición
        alert(`Acertaste, el número es: ${numeroUsuario}. Lo hiciste en ${intentos} ${intentos == 1 ? 'vez' : 'veces' }`);
    } else {
        if (numeroUsuario > numeroSecreto) {
            alert('El número secreto es menor');
        } else {
            alert('El número secreto es mayor');
        }
        //Incrementamos el contador cuando no acierta
        //intentos = intentos + 1;
        //intentos += 1;
        intentos++;

        //palabraVeces = 'veces';
        if (intentos > maximosIntentos) {
            alert(`Llegaste al número máximo de ${maximosIntentos} intentos`);
            break;
        }
        //La condición no se cumplió
        //alert('Lo siento, no acertaste el número');
    }
}
1 respuesta

Hola Miguel, la verdad muy interesante lo que hiciste mi teoría es que da numero de 0 al 99 y con las pruebas que hice parece ser cierto: Muestra múltiples resultados en  la consola del navegador usando la formula de la pregunta y resalta en caso  en que dio  0Entonces que esta pasando aquí? Pienso que da primero las multiplicaciones y por ultimo la suma, pero intentemos visualizar los pasos primero tenemos la linea de codigo asi:

  • Math.floor(Math.random()* 10)* 10+1 * Math.floor(Math.random() * 10)

Ahora que es lo que sabemos seguro? Como dijeron los profesores Math.floor(Math.random()10) es un numero de 0 a 9 entonces remplacémoslo en nuestra formula para verlo un poco mas claro:

  • [0,9] * 10 +1 * [0,9]

Según mi teoría y los datos que vi en la consola pienso que javascript hace primero las multiplicaciones tanto del lado izquierdo como el derecho y por ultimo la suma, entonces actualicemos los rangos de la izquierda que quedaría el inferior 010= 0 y 910 = 90, mientras que el lado derecho queda igual porque esta multiplicado por uno, veamos como queda:

  • [0,90] + [0,9]

Ahora que vemos nuestra ecuación final podemos saber cuanto es lo mínimo posible y lo máximo que puede alcanzar tu ecuación entonces si sumamos los dos mínimos(0 y 0) obtenemos un resultado de 0 que fue el que vi en la imagen! y si sumamos los maximos(90+9) daria 99 y nunca vi un 100 o un numero mayor en mis pruebas por lo cual concuerda.

Espero que haya sido de ayuda y ojala alguien vea este tema y confirme la solucion.