En un ejercicio de Codewars me encontré con el problema de hacer una función que determine si un número es narcisista usando JavaScript.
Hice la función y me gustó tanto el algoritmo que decidí implementarlo en otros lenguajes de programación.
Bueno he puesto todo en una función. Te recomiendo leer:
Funciones flecha en JavaScript
Todos esos artículos te ayudarán a profundizar en este lenguaje, y también harán que entiendas mejor lo que aquí se ve. Dicho esto, comencemos.
La función queda así:
const esNarcisista = numero => {
const numeroComoCadena = numero.toString(),
longitudDelNumero = numeroComoCadena.length;
let suma = 0;
// Recorrer la cadena, carácter por carácter
for (let indice = 0; indice < longitudDelNumero; indice++) {
// Tomar el carácter que esté en la cadena en la posición del índice
// y convertirlo a entero
/*
Recordemos que para elevar un número a una potencia hacemos:
elevado = numero ** potencia;
Lo mismo que hacer:
elevado = Math.pow(numero, potencia);
Más info: https://parzibyte.me/blog/2018/04/20/elevar-numero-potencia-javascript/
*/ let cifraComoEntero = parseInt(numeroComoCadena[indice]),
numeroElevado = cifraComoEntero ** longitudDelNumero;
suma = suma + numeroElevado;
}
if (suma === numero) return true;
else return false;
}
Con JavaScript no presentamos tantos problemas a la hora de convertir tipos, usamos parseInt
y toString
sobre cualquier variable para obtener los resultados deseados. Esto es gracias a que es de tipado débil.
Por cierto, la explicación del algoritmo así como la solución en otros lenguajes está en otro post.
Como esta es una función, podemos llamar a la misma. Ya sea desde el navegador o en el lado del servidor con Node.JS
En mi caso la ejecutaré en node, y esta es la salida:
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios