Descrizione
Ci sono state molte altre sfide riguardanti questi numeri prima, e spero che questo non sia tra questi.
Il n -esimo numero triangolare è uguale alla somma di tutti i numeri naturali fino a n , roba semplice. Ci sono una pagina di Wikipedia e una voce su OEIS , per coloro che desiderano informarsi ulteriormente.
Ora, Gauss ha scoperto che ogni numero naturale può essere espresso come una somma di tre numeri triangolari (questi includono 0
), ed è bene avere un numero più di una volta, ad es 0 + 1 + 1 = 2
.
Sfida
Il tuo compito è scrivere un programma o una funzione, dato un numero naturale (incluso 0
), stampare tre numeri triangolari che si sommano all'argomento. Puoi stampare i numeri separati da spazi, come una matrice o con un altro metodo che ti piace. Tuttavia, è vietato utilizzare qualsiasi funzione incorporata per ottenere direttamente un array, un intervallo o qualsiasi altra forma di raccolta contenente un elenco di numeri triangolari (ad esempio un singolo atomo che produce l'intervallo).
Casi 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
Nota: se esiste più di una combinazione possibile, è possibile stampare una o tutte, ma è necessario stampare una combinazione una sola volta, eliminando tutte le combinazioni che sono il risultato della riorganizzazione di altre combinazioni. Apprezzerei molto un link di prova e una spiegazione, mi piace molto vedere come risolvi il problema;)
Questo è code-golf , quindi si applicano scappatoie standard. Che vinca la risposta più breve in byte!
a
non sarà sempre un numero triangolare
n
e restituiscono un elenco dei primi n
numeri triangolari ? Sembra piuttosto mirato contro un linguaggio specifico, anche se non so quale.