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

[Proyecto] Desafio 4: Optimización de Codigo.

Les comparto mis soluciones a dos de los desafíos presentados. Me parece que algunos tienen punto de mejora, ya que los if anidados, siento que pueden causar errores, con el escalamiento del código. Primero les comparto una función que hice para poder generar listas de números:

let cantidadNumeros = 0;
cantidadNumeros = parseInt(prompt('¿Cúantos números desea que tenga la lista? : '));

function generadorListaNumeros(longitud){
    let k = 0;
    let lista = [];
    while(k < longitud) {
        lista.push(Math.floor(Math.random()*(longitud+1)));
        k++
    }
    return lista;
}
listaNumeros = generadorListaNumeros(cantidadNumeros);

Cómo pueden observar un código muy simple, pero que ahorra tiempo, para la resolución de estos desafíos. En cuanto a los desafíos que me parecieron interesantes, son el número 7 y el número 9. Mis soluciones respectivamente fueron las siguientes:

//Desafio 7
/*
 * Crea una función que muestre en la consola el número más grande y el número más pequeño en una lista.
 */
function maxMini(lista){
    let k = 0;
    let max = lista[k];
    let min = lista[k];
    let longitud = lista.length;
    console.log("Iniciamos con max igual a: ", max, "Iniciamos con min igual a: ",min);
    k++;
    while(k < longitud ){
        if(max <=  lista[k]){
            max = lista[k];
            console.log("Maximo Momentaneo",max, "Contador",k);
            k++;
        } else {
            if(min >= lista[k]){
                min = lista[k];
                console.log("Mínimo Momentaneo", min, "Contador",k);
                k++;
            } else {
                min = min;
                k++;
            }
        }
    }
    return console.log('El máximo es: ', max, 'el mínimo es: ', min);
}

maxMini(listaNumeros);

Claramente, podemos remover los console.log(), ya que sólo fueron una ayuda visual, sin embargo siento que la solución carece de elegancia, parece que martille el problema hasta solucionarlo, sobre todo la parte de los if else anidados. ¿No se si alguien encontró una solución mas optima y que evite el anidamiento de condicionales?.

En cuanto al desafío 9, mi solución fue la siguiente:

let lookUp = parseInt(prompt('Ingrese un entero que desee buscar: '));

function buscarArreglo(lista, numero) {
    let k=0;
    let longitud = lista.length;
    let flag = 0;
    while(k < longitud){
        if(lista[k] == numero){
            flag = k;
            break;
        } else{
            if(k == (longitud-1) ){
                flag = -1;
                break;
            } else{
                k++;
            }
        }
    }
    return flag;
}

console.log(buscarArreglo(listaNumeros, lookUp));

Nuevamente use condicionales anidados, que con problemas más complejos no creo que sea óptimo. Además se comporta como un vlookup de excel, ya que en el momento que encuentra el número, sólo nos dará la primera posición de este, pero en caso de encontrarse repetido, no nos devolverá el resto de las posiciones.

Si alguien encuentra un punto de mejora, me encantaría verlo, o una solución más elegante. De antemano muchas gracias por su tiempo.

1 respuesta

Hola Ale!

Gracias por compartir tu Respuesta con nosotros. es excelente ver cómo vas avanzando en el curso. Te animo a seguir practicando y experimentando con lo que has aprendido hasta ahora.

Recuerda que las actividades no es necesario que sean publicadas en el foro. Este espacio está principalmente destinado para resolver dudas específicas relacionadas con el contenido de los cursos, lo que nos permite optimizar el tiempo de respuesta para todos los alumnos. Si tienes comentarios, opiniones o deseas compartir ideas, te sugiero interactuar con la comunidad en nuestro Discord, donde podrás intercambiar pensamientos y recibir feedback de manera más dinámica.

Sigue adelante con tu trabajo, y no dudes en regresar al foro si tienes alguna pregunta o necesitas ayuda.

Gracias Nuevamente!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!