Seidel三角形是类似于Pascal三角形的数学结构,并因其与伯努利数的关系而闻名。
前几行是:
1
1 1
2 2 1
2 4 5 5
16 16 14 10 5
16 32 46 56 61 61
每行生成如下:
如果行号是偶数(1索引):
调低上一行的第一项
每个下一个项目是上一个项目及其上一个项目的总和
复制最后一个项目
如果行号是奇数:
调低上一行的最后一项
走向倒退,每一项都是前一个项目的总和,它上面的项目
复制现在的第一项。
基本上,我们以锯齿形构造三角形:
1
v
1 > 1
v
2 < 2 < 1
v
2 > 4 > 5 > 5
有关更多信息,请参见 伯努利数字上的Wikipedia页面。
挑战:
给定n
,作为函数参数或来自STDIN,打印或返回n
Seidel三角形的第t行或第一个行n
行。您可以使用0或1索引。
您无需处理负数或非整数输入(如果为1索引,则也不能为0)。您不必处理大于2147483647 = 2^31 - 1
由于这是代码高尔夫,因此请以尽可能少的字节为单位。
例子:
在这些示例中,返回值是n
第0行,从0开始。
Input -> Output
0 1
1 1 1
2 2 2 1
6 272 272 256 224 178 122 61
13 22368256 44736512 66750976 88057856 108311296 127181312 144361456 159575936 172585936 183194912 191252686 196658216 199360981 199360981
“您不必处理比您的语言的默认int类型大的输出”对于只有1位int的语言来说,这是微不足道的
—
仅ASCII
可以始终按从小到大的顺序输出行吗?
—
Angs
仅限
—
@ASCII
@Angs否,行应如图所示进行排序
—
Bolce Bussiere
@ ASCII-only这是默认的漏洞(尽管IMO措辞有点差,因为它取决于人们认为“合理”的东西)
—
user202729 '18