Generar un árbol binario completo con una sola fórmula matricial
Un miembro de la comunidad plantea un reto fascinante: dado un número central (ej: 1007), generar automáticamente todo el árbol binario con ancestros arriba y descendientes abajo, en formato visual de cuadro.
La relación entre nodos sigue la lógica de árboles binarios: para un nodo con valor v (restando 1000 para simplificar), sus hijos izquierdo y derecho son v2+1 y v2+2. Los ancestros se calculan con ENTERO(v/2^n).
Nacho ofrece una primera aproximación funcional con LAMBDA + APILARV/APILARH, hardcodeando la estructura del árbol:
``
=LAMBDA(_v;
LET(
_vn; _v - 1000;
APILARH(
APILARV(
1007 + (_vn 8);
"";
1008 + (_vn 8);
...
);
...
)
)
)
`
John lleva la solución a otro nivel con una fórmula matricial pura usando LET + SECUENCIA + ENFILA y aritmética binaria. La clave está en calcular la "profundidad" de cada celda y usar potencias de 2 para derivar los valores:
`
=LET(
x; 1007;
f; SECUENCIA(7);
c; ENFILA(f);
d; ABS(c-4);
p; 8/2^d;
v; x-999;
SI(d;
SI(RESIDUO(f;2p)=p;
999+v2^d+(c>4)2^(d-1)+ENTERO(f/p/2);
""
);
SI(f<5; 999+ENTERO(v/2^(4-f)); "")
)
)
`
John explica la lógica: para el nodo 1007 (simplificado a 7), hijo izquierdo = 72+1 = 15 (→ 1015), hijo derecho = 72+2 = 16 (→ 1016). Los nietos de 1015 serían 152+1 = 31 y 15*2+2 = 32. Los ancestros se obtienen dividiendo entre potencias de 2.
Leo sugiere una extensión con REDUCE para generar el árbol con bucles, permitiendo definir el rango de números y la estructura de forma variable. La aplicación real: redes de mercadeo con estructura binaria (referidos), donde cada persona tiene dos "patas".
El archivo adjunto contiene la función GENERACUADRO` como LAMBDA registrada que genera todo el árbol a partir de un número central.
Más contenido de Excel en InflueXcel
- 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
- Nueva Función IMPORTTEXT TutorialNueva función IMPORTTEXT en Excel!! https://techcommunity.microsoft.com/blog/microsoft365insiderblog/bring-data-into-excel-with-the-new-impo
- ¿Columnas con nombres distintos en Power Query? Tutorial¿Columnas con nombres distintos en Power Query? Aquí tienes la solución definitiva para normalizar tus datos y evitar errores al combinar fi
- BUSCARX con valor devuelto dinámico: elige la columna con un botón o un segmentador CasoUna integrante de la comunidad planteó un reto muy habitual al trabajar con tablas de varias columnas: tiene una lista de municipios con cua
- Saldo acumulado por mes: tres enfoques (REDUCE+BYROW, PIVOTARPOR+acumulado, MMULT) CasoJuan plantea una pregunta que parece sencilla y se acaba convirtiendo en tres clases magistrales sobre cómo recorrer una matriz mes a mes. T
- Mapa de España con burbujas: ubicar variables por provincia usando coordenadas X/Y CasoEsta semana surgió una duda muy visual en el grupo: cómo mostrar dos variables por provincia en un mapa de España — una pintada en intensida
- Regularización trimestral con AGRUPARPOR y ARCHIVOMAKEARRAY: del caos a una fórmula CasoCaso fresquito de la comunidad. Juan plantea un problema contable: tiene una tabla de movimientos (Nombre, Cuenta, Importe, Fecha) y necesit
- Grado de avance por proyecto: despivotar y volver a pivotar por fecha CasoNuevo caso de la comunidad con mucho jugo para los que trabajan con reporting de proyectos. Juan plantea un problema habitual en oficinas té