tanrax / soy-un-buen-programador-js

Juego con retos sencillos de JavaScript para probarte a ti mismo que sabes lo que haces
11 stars 2 forks source link

Posibles soluciones #2

Open GilbertrdzDev opened 2 years ago

GilbertrdzDev commented 2 years ago

Hola qué tal, vi una publicación de los retos por Telegram en el grupo de Javascript y me tomé un tiempo en pensar algunas posibles soluciones, no son las mejores, pero ahí vamos:

Reto 1

const miArray = [ ...new Array(11).keys() ];
console.log( miArray ); // (11) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Reto 2

const miLista = [ "Lisp", "Clojure", "Haskell", "PHP", "Racket" ].filter( (value, key) => key !== 2 );
console.log( miLista ); // (4) ['Lisp', 'Clojure', 'PHP', 'Racket']

Reto 3

const otraLista = [ "Lisp", "Clojure", "Haskell", "Elm", "Racket", "Swift", "Erlang", "Scala" ];
const countS = otraLista.filter( value => value.includes("s") )
.reduce( total => ++total, 0 );
console.log( countS ); // 2

Reto 4


const eliminarAcentos = (str) => {
const acentos = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
const sinAcentos = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz";
const arrAcentos = str.split('');
const arrSinAcentos = [];

arrAcentos.forEach( ( letras ) => {
    const indice = acentos.indexOf( letras );
    indice !== -1
        ? arrSinAcentos.push( sinAcentos[indice] )
        : arrSinAcentos.push( letras );
});

return arrSinAcentos.join('');

};

console.log( eliminarAcentos( 'Holà, ¿qué tal?' ) ); // Hola, ¿que tal?

> Reto 5 - 2 posibles soluciones:
```js
const secuencia = [ 0, 5 ];

const fibonacci = (n, secuencia = [0, 1]) => {
    return new Array(n).fill(0).map((valor, indice) => {
        return indice < 2
            ? secuencia[indice]
            : secuencia[indice] = secuencia[indice - 1] + secuencia[indice - 2];
    });
}

const fibonacciFor = (n, secuencia = [0, 1]) => {
    for (let i = 2; i < n; i++) {
        secuencia[i] = secuencia[i - 1] + secuencia[i - 2];
    }
    return secuencia;
}

console.log( fibonacci(10, secuencia) ); // (10) [0, 5, 5, 10, 15, 25, 40, 65, 105, 170]
console.log( fibonacciFor(10, secuencia) ); // (10) [0, 5, 5, 10, 15, 25, 40, 65, 105, 170]
tanrax commented 2 years ago

¡Gracias por participar!

Reto 1 perfecto. Reto 2. Has quitado la posición 2, y yo te pedía la 3 :) La forma esta bien, eso sí. Reto 3 ¿Por qué ++total en lugar de un simple total++ o total += 1? Reto 4 Hay una contrariedad. Se está guardando en una constante usando push. ¿Funciona? Si, ok. Pero a nivel de solución... buscaría otras maneras que no impliquen ese push tan feo. Por otro lado, es una solución poco elegante... Reto 5 No te la puedo dar por válida. En la primera has hecho uso de una variable para almacenar y en la segunda un bucle for. ¿Quieres volver a intentarlo?

Si quieres ver las soluciones... están aquí: https://www.notion.so/androsfenollosa/Soluciones-soy-un-buen-programador-3d5b5bc24fac4353a03fa47434fae699

tanrax commented 2 years ago

¿Quieres intentarlo @GilbertrdzDev ?