描述
以前,有关这些数字还有很多其他挑战,我希望这一挑战不在其中。
第n个三角数等于所有自然数之和,直到n个简单的东西。对于希望进一步了解自己的人,有一个Wikipedia页面和OEIS条目。
现在,高斯发现每个自然数都可以表示为三个三角数之和(包括0
),并且多于一个数也很好,例如0 + 1 + 1 = 2
。
挑战
给定自然数(包括0
),您的任务是编写一个程序或函数,并打印出三个加起来为参数的三角形数。您可以打印以空格,数组或其他喜欢的方法分隔的数字。但是,禁止使用任何内置函数直接获取包含三角数列表的数组,范围或任何其他形式的集合(例如,产生该范围的单个原子)。
测试用例
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
注意:如果有多个可能的组合,则可以打印任何一个或全部,但是必须仅打印一次任何组合,从而消除了由于重新排列其他组合而导致的所有组合。我真的很喜欢尝试链接和解释,我真的很乐意看到您如何解决问题;)
这是代码高尔夫球,因此存在标准漏洞。以字节为单位的最短答案可能会获胜!
a
并不总是一个三角形数
n
并返回第一个n
三角形数字列表的内置函数?尽管我不知道哪种语言,但是这感觉是针对某些特定语言的。