Rust

Número narcisista en Rust

Para probar un poco el lenguaje de programación Rust he implementado un algoritmo que ya se ha visto mucho por aquí, y es el del número narcisista.

Narcisista en el lenguaje de programación Rust

Igualmente viendo este post se puede ver cómo es la función en distintos lenguajes de programación; para realizar una comparativa.

Requisitos y recomendaciones

Leer el post que se cita al inicio, pues ahí se explica en términos generales lo que es un número narcisista. Si se desea compilar este ejemplo, se debe instalar Rust.

Número narcisista en Rust

Sin tantos rodeos, aquí está el código:

/*
 Algoritmo para determinar si un número es narcisista en Rust
 @author parzibyte
*/fn main() {
 let numeros = [1, 2, 153, 20, 371, 407, 201, 60];
 for &numero in numeros.iter(){
  println!("¿El número {} es narcisista? {}", numero, es_narcisista(numero));
 }
}

fn es_narcisista(numero: u64) -> bool{
 let numero_como_cadena = numero.to_string();
 let longitud = numero_como_cadena.len() as u32;
 let mut suma: u64 = 0;
 for caracter in numero_como_cadena.chars(){
  suma += caracter.to_digit(10).unwrap().pow(longitud) as u64;
 }
 return suma == numero;
}

Para convertir un número a cadena o string, se utiliza el método to_string()(aquí la documentación). La longitud de una cadena es obtenida con .len().

Como en Rust ninguna variable se puede cambiar por defecto, al menos que sea especificado, se declara a suma como mutable; pues ahí se almacenará cada resultado de elevar el número a una potencia.

El tipo de dato u64 es utilizado para evitar desbordamientos de variables; pues es el tipo de dato entero más grande en Rust: unsigned de 64 bits.

La función es expresiva: recibe un número entero de 64 bits sin signo, y se devuelve un booleano. Para probar se puede ver el código que está dentro de main.

Compilar código

Primero se necesita descargar, copiar o transcribir el código en un archivo. Después se debe navegar hasta el directorio y ejecutar:

rustc narcisista.rs

Con ello, se va a generar un archivo llamado narcisista.exe (o tal vez tenga otro nombre en distintas plataformas) que se puede ejecutar como cualquier binario.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 semanas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

2 semanas hace

Esta web usa cookies.