Descrição
Já houve alguns outros desafios com relação a esses números, e espero que este não esteja entre eles.
O n º número triangular é igual à soma de todos os números naturais até n , coisas simples. Há uma página da Wikipedia e uma entrada na OEIS , para aqueles que desejam se informar mais.
Agora, Gauss descobriu que todo número natural pode ser expresso como uma soma de três números triangulares (estes incluem 0
), e é bom ter um número mais de uma vez, por exemplo 0 + 1 + 1 = 2
.
Desafio
Sua tarefa é escrever um programa ou função, dado um número natural (inclusive 0
), imprime três números triangulares que somam o argumento. Você pode imprimir os números separados por espaços, como uma matriz ou por outro método que desejar. No entanto, é proibido usar qualquer função interna para obter diretamente uma matriz, um intervalo ou qualquer outra forma de coleção que contenha uma lista de números triangulares (por exemplo, um único átomo que produz o intervalo).
Casos de teste
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: Se houver mais de uma combinação possível, você poderá imprimir uma ou todas, mas deverá imprimir qualquer combinação apenas uma vez, eliminando todas as combinações resultantes da reorganização de outras combinações. Eu realmente aprecio um link try-it e uma explicação, eu realmente gosto de ver como você resolve o problema;)
Isso é código-golfe , então as brechas padrão se aplicam. Que vença a resposta mais curta em bytes!
a
não será sempre um número triangular
n
e retornam uma lista dos primeiros n
números de triângulo são permitidas? Isso parece bastante direcionado a alguma linguagem específica, embora eu não saiba qual.