1. Problema
Generar números de Armstrong utilizando los elementos de programación funcional que dispone LINQ.
2. Solución
Un número de Armstrong es número que se obtiene a partir de la suma de los dígitos elevados al cubo (Mukherjee, 2014); es decir:
3. Código C#
Archivo C# numeros-armstrong.cs [enlace alternativo]:
En el método Main() (líneas 19-24) se realizan las siguientes operaciones:
El método de extensión Digitos() (líneas 4-16) es el que permite descomponer un número dado en sus dígitos.
En el método Main() (líneas 19-24) se realizan las siguientes operaciones:
- Se genera el rango 0-1000: Enumerable.Range(0, 1000)
- Se utiliza la función filtro Where para comprobar que la suma de los dígitos (cada uno elevado al cubo) es igual al número actual k.
- Por cada número k del rango (0-1000) se realiza la proyección de elevar al cubo cada dígito (obtenidos con la método de extensión Digitos()); y finalmente aplicar la función estadística de Sum() para sumar todos los cubos.
4. Literatura & Enlaces
Mukherjee, S (2014). Thinking in LINQ Harnessing the Power of Functional Programming in .NET Applications. United States: Apress.
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.