Beschreibung
Es gab schon einige andere Herausforderungen in Bezug auf diese Zahlen, und ich hoffe, dass diese nicht darunter ist.
Die n- te Dreieckszahl entspricht der Summe aller natürlichen Zahlen bis zu n einfachen Sachen. Für diejenigen, die sich weiter informieren möchten, gibt es eine Wikipedia-Seite und einen Eintrag bei OEIS .
Nun fand Gauß heraus, dass jede natürliche Zahl als Summe von drei Dreieckszahlen (einschließlich 0
) ausgedrückt werden kann , und es ist in Ordnung, eine Zahl mehr als einmal zu haben, z 0 + 1 + 1 = 2
.
Herausforderung
Ihre Aufgabe ist es, ein Programm oder eine Funktion mit einer natürlichen Zahl (einschließlich 0
) zu schreiben, die drei Dreieckszahlen ausgibt, die das Argument ergeben. Sie können die durch Leerzeichen getrennten Zahlen als Array oder nach einer anderen Methode ausdrucken. Es ist jedoch verboten , eingebaute Funktionen zu verwenden, um direkt ein Array, einen Bereich oder eine andere Form der Sammlung abzurufen, die eine Liste dreieckiger Zahlen enthält (zum Beispiel ein einzelnes Atom, das den Bereich ergibt).
Testfälle
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
Hinweis: Wenn es mehr als eine mögliche Kombination gibt, können Sie eine oder alle drucken, aber Sie müssen jede Kombination nur einmal drucken, um alle Kombinationen zu entfernen, die das Ergebnis einer Neuanordnung anderer Kombinationen sind. Ich würde mich sehr über einen Try-It-Link und eine Erklärung freuen. Ich freue mich sehr zu sehen, wie Sie das Problem lösen.
Dies ist Code-Golf , daher gelten Standard-Regelungslücken. Möge die kürzeste Antwort in Bytes gewinnen!
a
wird nicht immer eine dreieckige Zahl sein
n
und eine Liste der ersten n
Rückdreieckszahlen sind zulässig? Das fühlt sich eher gegen eine bestimmte Sprache gerichtet an, obwohl ich nicht weiß, welche.