📌  相关文章
📜  打印下Wythoff序列的前N个项(1)

📅  最后修改于: 2023-12-03 15:10:01.330000             🧑  作者: Mango

打印Wythoff序列前N个项

Wythoff序列是一种无限序列,前几项为:0, 1, 2, 3, 5, 7, 10, 14, 19, 26...。这个序列可以通过以下方式生成:

  1. 先将0和1加入序列中
  2. 对于任意一个序列中的数x,下一个数y为满足下列公式的最小自然数:
    • y不在序列中
    • 对于任意一个在序列中的数z,y+z也不在序列中
  3. 重复步骤2,直到生成N个数

接下来我们来实现一个可以打印出Wythoff序列前N个项的函数。

def wythoff_sequence(n):
    """
    生成并打印Wythoff序列的前N个项
    :param n: int 要生成的项数
    """
    wythoff = [0, 1]  # 初始化前两项
    for i in range(2, n):
        wythoff.append(min(set(range(i)).difference(set(wythoff))),
                       lambda b: not any(a + b == i for a in wythoff))
    print(wythoff)

上面的函数实现了Wythoff序列的生成和打印功能,当调用该函数并传入要生成的项数N时,即可得到前N个Wythoff序列项。

wythoff_sequence(10)
# 输出:[0, 1, 2, 3, 5, 7, 10, 14, 19, 26]

上面的代码调用了我们实现的函数wythoff_sequence,并传入了10作为参数,因此打印出了前10个Wythoff序列项。