Un árbol divisor estéticamente agradable es un árbol de divisores de entrada n
que, para cualquier número compuesto m
, tiene dos nodos hijos que son el par de divisores más cercanos a la raíz cuadrada de m
. El nodo izquierdo debería ser el divisor más pequeño de m
y el nodo derecho debería ser el divisor más grande de m
. Un número primo en el árbol no debe tener nodos secundarios. Su árbol puede estar en forma de arte de texto o una imagen. Las reglas para la salida de arte de texto son las siguientes.
Reglas de espaciado
Para espaciar los nodos en el árbol, tenemos las siguientes reglas:
- Los nodos a una profundidad dada desde la raíz deben estar todos en la misma línea de texto en la salida.
/ \ NOT / \ / \ / 3 2 3 2
- Para los nodos izquierdos, la rama entrante debe estar en la esquina superior derecha si el nodo es un número de un solo dígito, de lo contrario, justo arriba del último dígito. Ejemplo:
/ Y / 3 720
- Para los nodos derechos, la rama entrante debe estar en la esquina superior izquierda si el nodo es un número de un solo dígito, de lo contrario, justo arriba del primer dígito. Ejemplo:
\ Y \ 7 243
- Para las ramas izquierdas salientes, la rama debe comenzar un espacio a la izquierda del número. Ejemplo:
275 / / 11
- Para las ramas derechas salientes, la rama debe comenzar un espacio a la derecha del número. Ejemplo:
275 \ 25
- Cualquiera de los dos nodos en el mismo nivel del árbol debe tener un mínimo de dos espacios entre ellos. Al mismo tiempo, cualquiera de los dos subárboles en el mismo nivel del árbol debe tener el menor espacio posible entre ellos.
Este árbol no funciona porque los ** subárboles ** están demasiado cerca. 504 / \ / \ / \ / \ 21) 24 / \. / \ / \. / \ 3 7. 4 6 . / \ / \ .2 2 2 3 Si bien este árbol tiene suficiente espacio entre sus ramas. 504 / \ / \ / \ / \ / \ 21 ... 24 / \ ... / \ / \ ... / \ 3 7 ... 4 6 ... / \ / \ ... 2 2 2 3
- Si dos subárboles están demasiado juntos en un árbol, se pueden separar agregando otra fila de ramas
/\
al árbol sobre los padres.
441 / \ La última fila aún no se ha completado y ya nos hemos quedado sin espacio. 21 21 / \ / \ Agrega otra fila de ramas 441 / \ Casi, pero el 7 y el 3 están demasiado juntos. / \ Una fila más debería hacerlo. 21 21 / \ / \ 3 7 3 7 Agrega otra fila de ramas 441 / \ Y hemos terminado. / \ / \ 21 21 / \ / \ 3 7 3 7
Ejemplos
Como ejemplo completo, el árbol divisor de 24 se verá así:
24
/ \
/ \
4 6
/ \ / \
2 2 2 3
4 y 6 son el par de divisores más cercanos a la raíz cuadrada de 24. 4 está a la izquierda, porque es más pequeño. En la siguiente línea, el número 2 a la izquierda del 3, porque es más pequeño.
El árbol divisor para 63 debería verse así:
63 and NOT like this 63
/ \ / \
7 9 3 21
/ \ / \
3 3 7 3
En el árbol incorrecto, 3 y 21 no son el par de divisores más cercanos a la raíz cuadrada de 63, y 3 y 7 no están ordenados correctamente. Sin embargo, la colocación de la rama en el 21 es correcta.
Para 42, deberías tener:
42 and NOT 42
/ \ / \
6 7 21 2
/ \ / \
2 3 3 7
Echemos un vistazo a 720. Tenga en cuenta que necesitamos cinco niveles de ramas 720
para que los subárboles 24
y 30
estén correctamente espaciados. Además, tenga en cuenta que 24
y 30
tiene dos niveles de ramas porque 4
y 6
tiene nodos hijos que necesitan un espaciado correcto y los nodos hijos de 30
deben estar en el mismo nivel que los nodos hijos de 24
.
720
/ \
/ \
/ \
/ \
/ \
24 30
/ \ / \
/ \ / \
4 6 5 6
/ \ / \ / \
2 2 2 3 2 3
El reto
- Su tarea es construir un árbol divisor estéticamente agradable correctamente espaciado para la entrada
n
, donden
es un entero positivo mayor que 1. - Su salida puede contener espacios iniciales y finales y nuevas líneas iniciales y finales, pero por lo demás debe cumplir con las reglas de espacio proporcionadas anteriormente.
- Su salida puede ser: texto, una imagen (otros formatos para agregar, si es necesario).
- Para las imágenes, asegúrese de que los nodos de su árbol estén bien espaciados y que los nodos a la misma altura del árbol estén a la misma altura en la imagen.
- Este es el código de golf. El menor número de bytes (o equivalente) gana.
Gracias a Stewie Griffin por pensar en esta idea, y muchas gracias a Peter Taylor, Martin Ender, Mego y Eᴀsᴛᴇʀʟʏ Iʀᴋ por su ayuda en la reescritura de la especificación. Como de costumbre, cualquier sugerencia o corrección es muy apreciada. ¡Buena suerte y buen golf!
Más casos de prueba:
2
4
/ \
2 2
20
/ \
4 5
/ \
2 2
323
/ \
17 19
362880
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
/ \
576 630
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
/ \ / \
24 24 21 30
/ \ / \ / \ / \
/ \ / \ / \ / \
4 6 4 6 3 7 5 6
/ \ / \ / \ / \ / \
2 2 2 3 2 2 2 3 2 3
1286250
/ \
/ \
/ \
/ \
/ \
1050 1225
/ \ / \
/ \ / \
/ \ / \
30 35 35 35
/ \ / \ / \ / \
5 6 5 7 5 7 5 7
/ \
2 3