Descripción
Ha habido muchos otros desafíos relacionados con estos números antes, y espero que este no esté entre ellos.
El n º número triangular es igual a la suma de todos los números naturales hasta n , cosas simples. Hay una página de wikipedia y una entrada en OEIS , para aquellos que desean informarse más.
Ahora, Gauss descubrió que cada número natural puede expresarse como una suma de tres números triangulares (estos incluyen 0
), y está bien tener un número más de una vez, por ejemplo 0 + 1 + 1 = 2
.
Desafío
Su tarea es escribir un programa o función, dado un número natural (incluido 0
), imprime tres números triangulares que suman el argumento. Puede imprimir los números separados por espacios, como una matriz o por otro método que desee. Sin embargo, está prohibido usar cualquier función integrada para obtener directamente una matriz, un rango o cualquier otra forma de colección que contenga una lista de números triangulares (por ejemplo, un solo átomo que produce el rango).
Casos de prueba
9 -> 6 + 3 + 0 or 3 + 3 + 3
12 -> 6 + 6 + 0 or 6 + 3 + 3 or 10 + 1 + 1
13 -> 6 + 6 + 1
1 -> 1 + 0 + 0
0 -> 0 + 0 + 0
Nota: Si hay más de una combinación posible, puede imprimir una o todas, pero debe imprimir cualquier combinación solo una vez, eliminando todas las combinaciones que son el resultado de reorganizar otras combinaciones. Realmente agradecería un enlace de prueba y una explicación, realmente me encanta ver cómo resuelve el problema;)
Esto es código golf , por lo que se aplican las lagunas estándar. ¡Que gane la respuesta más corta en bytes!
fuente
a
no siempre será un número triangularn
y devuelven una lista de los primerosn
números de triángulo ? Eso se siente más bien dirigido contra un lenguaje específico, aunque no sé cuál.