Recursion Replacement es-419 Explainer

Explicador de Reemplazo de recursividad

Objetivo de este acertijo: Completar la función recursiva updateAllNames.

Tutorial de la solución: La definición de la función updateAllNames no es correcta. Sólo reemplaza el primer error ortográfico que es lo mismo que hace el método .replace(). Debemos lograr que la función reemplace todos los errores ortográficos.

La primera parte de la función es una if statement que verifica si el string no incluye errores ortográficos. Esto es lo mismo que preguntar si todos los errores ortográficos desaparecieron. Si no hay errores ortográficos, entonces solo debemos return (devolver) el string porque todo el trabajo está hecho. Si esa verificación falla, entonces todavía hay errores ortográficos que corregir.

La siguiente línea hace un .replace() (reemplazo) para corregir el primer error ortográfico que encuentre. Ahora, nuestro string es un poco mejor porque tiene un error ortográfico menos. Sin embargo, aún quedan errores ortográficos. Debemos hacer algo para verificar si estamos listos o si hay más errores ortográficos que corregir. Sorprendentemente, tenemos una función que ya comprueba si el string no contiene errores ortográficos; de lo contrario, corrige 1 error ortográfico: la función updateAllNames que estamos viendo.

Después de haber hecho nuestro .replace(), debemos llamar a la función updateAllNames() y return (devolver) ese valor: return updateAllNames(string, oldPart, newPart);. Esto es casi como un ciclo, porque cuando ejecutamos updateAllNames() por primera vez, probablemente se pedirá a sí misma que se ejecute una y otra vez. Pero la parte importante es que cada vez que se llama a la función, se realiza una verificación de inmediato para ver si el trabajo está hecho. Eso se llama un “caso base”, este es el caso que no tenemos que repetir (hacer que la función se llame así misma) más.

Además, cada vez que repetimos, nos acercamos al caso base (sin errores ortográficos), ya que estamos eliminando 1 error ortográfico cada vez. Con el tiempo, nos desharemos de todos los errores ortográficos y la recursividad está completa.

Solución del código de ejemplo:

(Pulsa a continuación para revelar)


function updateAllNames(string, oldPart, newPart) {

if (string.includes(oldPart) === false) {

return string;

}

string = string.replace(oldPart, newPart);

return updateAllNames(string, oldPart, newPart);

}

console.log(travelDocument);

console.log(updateAllNames(travelDocument, 'grasshoper', 'grasshopper'));

Conceptos de JavaScript: bloque de código (función, if statement), console.log() , recursividad, .replace()

Código adicional (código oculto que se ejecuta antes del código del acertijo):


let travelDocument =

`Hello grasshoper${pickRandom(['','Travel','Passport','Ticket','Plans','Vacation','Holiday','Trip'])}!

You will be going to ${pickRandom(['New Zealand','Cyprus','the Maldives','Oahu','Palawan','Bali','Maui'])}.

Your travel code is: "${pickRandom(['grasshoper8ugs','im1grasshoper','no1grasshoper'])}"

Enjoy your trip grasshoper!`;