Introducción
Ya he implementado este algoritmo en otros lenguajes de programación (los más populares creo yo). Llegó el turno de PHP. Veamos una función para determinar si un número es narcisista.
Si no sabes qué es un número narcisista, lee: Algoritmo para número narcisista en múltiples lenguajes de programación.
Función: es número narcisista
Para terminar pronto, puse todo en una función. Recomiendo leer:
El código fuente es este:
<?php
function esNarcisista($numero){
$numeroComoCadena = strval($numero);
$longitudDelNumero = strlen($numeroComoCadena);
$suma = 0;
for($indice = 0; $indice < $longitudDelNumero; $indice++){
// Convertir carácter a entero
$caracterActual = $numeroComoCadena[$indice];
$cifraComoEntero = intval($caracterActual);
// Elevar ese carácter a la potencia dada por la longitud del número
$elevado = pow($cifraComoEntero, $longitudDelNumero);
// El resultado lo añadimos a $suma
$suma = $suma + $elevado;
}
// Comprobar si la suma al elevar es igual al número que recibimos
if($suma === $numero) return true;
else return false;
}
De nuevo el tipado débil nos ayuda.
Para realizar conversiones usamos simplemente intval y strval. Eso sí, para elevar un número usamos la función nativa llamada pow.
Cómo usar el código
Es una función, por lo tanto podemos llamarla por valor como lo hacemos con otras funciones.
Aquí dejo la implementación que yo le di, en donde básicamente recorremos un arreglo de números enteros y comprobamos si cada número es o no narcisista.
Click aquí si quieres saber cómo ejecutar código PHP desde la terminal.
Pingback: Solución a algoritmo para determinar número narcisista en muchos lenguajes - Parzibyte's blog