You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求4元Ducci序列最大迭代次数及对应最小和四元组解法

4元Ducci序列最大迭代次数求解问题

问题定义

在正方形(活动正方形)的四个角分配四个非负整数,每一步操作如下:

  • 将每条边两端点数字的绝对值差分配给该边中点
  • 将四个新中点连接成与原正方形倾斜45度的新正方形,作为新的活动正方形
    重复上述步骤直到活动正方形四个角全为0。

定义f(a,b,c,d)为从顺时针排列的(a,b,c,d)开始,整个过程中绘制的正方形总数:

  • 示例:从(10,6,3,1)开始,序列为:

    (4,3,2,9)
    (1,1,7,5)
    (0,6,2,4)
    (6,4,2,4)
    (2,2,2,2)
    (0,0,0,0)
    过程结束,故f(10,6,3,1)=7;显然f(0,0,0,0)=1。

目标任务

考虑集合S={(a,b,c,d)|a,b,c,d为整数且0≤a,b,c,d≤10,000,000},M为f在S上的最大值。需要找到S中满足f(a,b,c,d)=M且a+b+c+d最小的(a,b,c,d),输出格式为分号分隔的列表(如10;6;3;1)。

当前尝试

  • 最初用Excel求解器,结果正确但计算量过大,设备无法承受。
  • 编写了Python代码生成和验证Ducci序列,但不知如何求解目标问题,代码如下:
def ducci_sequence(*ns):
    while True:
        yield ns
        ns = tuple(abs(ns[i - 1] - ns[i]) for i in range(len(ns)))

def ducci(*ns):
    known = set()
    for ns in ducci_sequence(*ns):
        print(ns)
        if ns in known or set(ns) == {0}:
            break
        known.add(ns)
    return len(known) + 1
print(ducci(0, 24, 68, 149), "steps")

代码输出:

(0, 24, 68, 149)
(149, 24, 44, 81)
(68, 125, 20, 37)
(31, 57, 105, 17)
(14, 26, 48, 88)
(74, 12, 22, 40)
(34, 62, 10, 18)
(16, 28, 52, 8)
(8, 12, 24, 44)
(36, 4, 12, 20)
(16, 32, 8, 8)
(8, 16, 24, 0)
(8, 8, 8, 24)
(16, 0, 0, 16)
(0, 16, 0, 16)
(16, 16, 16, 16)
(0, 0, 0, 0)
17 steps

请求指导

希望得到求解该问题的思路和方法,找到满足条件的(a,b,c,d)。

内容的提问来源于stack exchange,提问作者Friedib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:35:49