1. Problema
Generar factoriones en LINQ.
2. Solución
Un factorión es un número natural que es igual a la suma del factorial de sus dígitos. Algebraicamente, queda expresado como:
Un ejemplo sería 145:
145 = 1 + 24 + 120 = 1! + 4! + 5!
3. Código C#
En las líneas 12-25 está definido el método de extensión Digitos(): permite descomponer un número dado en sus dígitos.
Por su parte, el método Main() (líneas 1-8) efectúa las siguientes operaciones:
- Línea 3: Genera un rango de números enteros entre 0 y 1000.
- Línea 4: Aplica el filtro que comprueba que la suma del factorial de los dígitos de k es igual a k:
- Línea 5: Un nuevo filtro es aplicado para obtener sólo aquellos digítos que son mayores a 0: n > 0
- Línea 6: Se hace la proyección que consiste en calcular el factorial de cada uno de los dígitos y luego hallar su suma:
Select(d => Enumerable.Range(1, d).Aggregate((x, y) => x * y)).Sum()
4. Literatura & Enlaces
Bernard J. (2016). Python Recipes Handbook: A Problem-Solution Approach. Canada: Apress.
O
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.