La description
Il y a eu pas mal d'autres défis concernant ces chiffres auparavant, et j'espère que celui-ci n'en fait pas partie.
Le n ème nombre triangulaire est égal à la somme de tous les nombres naturels jusqu'à n , trucs simples. Il y a une page wikipedia et une entrée à OEIS , pour ceux qui souhaitent s'informer davantage.
Maintenant, Gauss a découvert que chaque nombre naturel peut être exprimé comme une somme de trois nombres triangulaires (ceux-ci incluent 0
), et il est bon d'avoir un nombre plus d'une fois, par exemple 0 + 1 + 1 = 2
.
Défi
Votre tâche consiste à écrire un programme ou une fonction, étant donné un nombre naturel (y compris 0
), imprime trois nombres triangulaires qui résument l'argument. Vous pouvez imprimer les nombres séparés par des espaces, comme un tableau ou par une autre méthode que vous aimez. Cependant, il est interdit d'utiliser des fonctions intégrées pour obtenir directement un tableau, une plage ou toute autre forme de collection contenant une liste de nombres triangulaires (par exemple un seul atome qui donne la plage).
Cas de test
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
Remarque: S'il existe plusieurs combinaisons possibles, vous pouvez imprimer une ou toutes les combinaisons, mais vous ne devez imprimer une seule combinaison qu'une seule fois, en éliminant toutes les combinaisons résultant de la réorganisation d'autres combinaisons. J'apprécierais vraiment un lien d'essai et une explication, j'aime vraiment voir comment vous résolvez le problème;)
Il s'agit de code-golf , donc les failles standard s'appliquent. Que la réponse la plus courte en octets gagne!
a
ne sera pas toujours un nombre triangulaire
n
et renvoient une liste des premiers n
nombres triangulaires sont-elles autorisées? Cela semble plutôt ciblé par rapport à un langage spécifique, même si je ne sais pas lequel.