Reducir un número a un dígito con LAMBDA recursiva y secuencia intermedia
Joan Recasens plantea un reto matemático: reducir un número a un solo dígito sumando sus cifras de forma recursiva, y además guardar toda la secuencia intermedia. Ejemplo: 654 → 6+5+4 = 15 → 1+5 = 6, mostrando 6 15 654.
Leo ofrece dos niveles de solución:
El atajo matemático para obtener solo el dígito final: basta con el módulo 9 (raíz digital):
``
=RESIDUO(A1 - 1; 9) + 1
`
Sin recursión, sin LAMBDA. RESIDUO(654-1; 9)+1 = 6. Funciona para cualquier número.
LAMBDA recursiva con secuencia completa: usa el patrón Y-combinator (LAMBDA que se pasa a sí misma) con REGEXEXTRACCION para extraer cada dígito y sumarlos:
`
=LET(
F; LAMBDA(F; x;
SI(LARGO(x) = 1; x;
APILARH(x; F(F; SUMA(--REGEXEXTRACCION(x; "."; 1))))
)
);
F(F; A1)
)
`
Para invertir la secuencia (del dígito final al número original):
`
=LET(
F; LAMBDA(F; x;
SI(LARGO(x) = 1; x;
APILARH(x; F(F; SUMA(--REGEXEXTRACCION(x; "."; 1))))
)
);
s; F(F; A1);
c; COLUMNAS(s);
INDICE(s; SECUENCIA(; c; c; -1))
)
`
Un caso que combina un truco matemático clásico (raíz digital = mod 9) con funciones LAMBDA avanzadas y REGEXEXTRACCION` para la extracción de dígitos.
Reducir un número a un solo dígito (y guardar toda la secuencia)
Joan Recasens planteó un reto con sabor matemático: reducir un número a un único dígito sumando sus cifras una y otra vez, y de paso conservar todos los pasos intermedios. Por ejemplo, 654 da 6+5+4 = 15 y luego 1+5 = 6, mostrando la secuencia 6 15 654. Leo respondió con dos niveles de solución.
El atajo matemático: la raíz digital
Si solo te interesa el dígito final, no necesitas recursión ni LAMBDA. Existe un resultado clásico: la raíz digital de un número coincide con su módulo 9 (ajustado). La fórmula cabe en una celda:
`` =RESIDUO(A1 - 1; 9) + 1 ``
Para 654: RESIDUO(654 - 1; 9) + 1 da 6. Funciona para cualquier número y es instantánea. El pequeño ajuste de restar 1 antes y sumar 1 después evita que los múltiplos de 9 den cero en lugar de nueve.
La versión completa: LAMBDA recursiva
Para guardar toda la secuencia, Leo usa una LAMBDA recursiva con el patrón de pasarse a sí misma como argumento, extrayendo cada dígito con REGEXEXTRACCION y sumándolos:
`` =LET( F; LAMBDA(F; x; SI(LARGO(x) = 1; x; APILARH(x; F(F; SUMA(REGEXEXTRACCION(x; "."; 1) * 1))) ) ); F(F; A1) ) ``
REGEXEXTRACCION(x; "."; 1) saca cada carácter del número como texto y, al multiplicarlo por 1, lo convierte en número para poder sumarlo. La recursión se detiene cuando el resultado tiene un solo dígito (LARGO(x) = 1), y APILARH va encadenando cada paso.
Si prefieres la secuencia en orden inverso, del dígito final al número original, basta con reordenar el resultado con INDICE y una SECUENCIA descendente:
`` =LET( F; LAMBDA(F; x; SI(LARGO(x) = 1; x; APILARH(x; F(F; SUMA(REGEXEXTRACCION(x; "."; 1) * 1))) ) ); s; F(F; A1); c; COLUMNAS(s); INDICE(s; SECUENCIA(; c; c; -1)) ) ``
Funciones clave
RESIDUO: la vía rápida al dígito final mediante la raíz digital (módulo 9).LAMBDArecursiva: se pasa a sí misma para iterar sin celdas auxiliares.REGEXEXTRACCION: separa el número en dígitos individuales; multiplicando por 1 los vuelve numéricos.APILARH,INDICEySECUENCIA: construyen y reordenan la secuencia de pasos.
Conclusión
Un mismo reto y dos registros distintos: un truco de teoría de números que resuelve el dígito final en una fórmula minúscula, y una LAMBDA recursiva que documenta cada paso del camino. Saber cuándo tirar de matemáticas y cuándo de funciones avanzadas es parte del oficio, y en la comunidad de InflueXcel suelen aparecer las dos en el mismo hilo.
Más contenido de Excel en InflueXcel
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)