Considere el triángulo equilátero estándar, con los nodos etiquetados con coordenadas barcéntricas :

Podemos convertir este triángulo de 3 nodos en un triángulo de 6 nodos agregando una nueva línea de 3 vértices (uno más de lo que estaba presente en un lado del triángulo original de 3 nodos), eliminar los bordes internos (pero no los nodos internos) y volver normalizar las coordenadas:
Repitiendo el proceso para pasar de un triángulo de 6 nodos a un triángulo de 10 nodos, agregue una línea de 4 vértices (nuevamente, uno más de lo que estaba presente en un lado del triángulo original de 6 nodos), elimine los bordes internos (pero no los nodos internos ) y re-normalizar las coordenadas:
Este proceso puede repetirse indefinidamente. El objetivo de este desafío es un número entero que Nrepresenta cuántas veces se ha realizado este proceso, generar todos los nodos para el triángulo asociado en coordenadas barcéntricas.
Entrada
Su programa / función debe tomar como entrada un número entero no negativo que Nrepresente cuántas veces se ha aplicado este proceso. Tenga en cuenta que para N=0, debe generar el triángulo original con 3 nodos.
La entrada puede provenir de cualquier fuente (parámetro de función, stdio, etc.).
Salida
Su programa / función debería generar todos los nodos en coordenadas barcéntricas normalizadas. El orden de los nodos no importa. Un número puede especificarse como una fracción (no se requiere reducción de fracción) o un número de coma flotante. También puede generar vectores "escalados" para especificar un nodo. Por ejemplo, las 3 de las siguientes salidas son equivalentes y están permitidas:
0.5,0.5,0
1/2,2/4,0
[1,1,0]/2
Si usa salida de punto flotante, su salida debe ser precisa dentro del 1%. La salida puede ser a cualquier sumidero deseado (estándar, valor de retorno, parámetro de retorno, etc.). Tenga en cuenta que a pesar de que las coordenadas barcéntricas están determinadas únicamente por 2 números por nodo, debe generar los 3 números por nodo.
Ejemplos
Los casos de ejemplo están formateados como:
N
x0,y0,z0
x1,y1,z1
x2,y2,z2
...
donde la primera línea es la entrada N, y todas las siguientes líneas forman un nodo x,y,zque debería estar en la salida exactamente una vez. Todos los números se dan como números aproximados de coma flotante.
0
1,0,0
0,1,0
0,0,1
1
1,0,0
0,1,0
0,0,1
0.5,0,0.5
0.5,0.5,0
0,0.5,0.5
2
1,0,0
0,1,0
0,0,1
0.667,0,0.333
0.667,0.333,0
0.333,0,0.667
0.333,0.333,0.333
0.333,0.667,0
0,0.333,0.667
0,0.667,0.333
3
1,0,0
0.75,0,0.25
0.75,0.25,0
0.5,0,0.5
0.5,0.25,0.25
0.5,0.5,0
0.25,0,0.75
0.25,0.25,0.5
0.25,0.5,0.25
0.25,0.75,0
0,0,1
0,0.25,0.75
0,0.5,0.5
0,0.75,0.25
0,1,0
Puntuación
Este es el código de golf; el código más corto en bytes gana. Se aplican lagunas estándar. Puede usar los complementos deseados.


[1,2,3]/6?