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

如何修复分块嵌套列表生成函数,适配非整除输入场景?

问题修复:生成符合要求的嵌套列表

我们需要将数字拆分为指定份数,已有如下parts函数可实现近似等长拆分:

def parts(num: int, div: int) -> list[int]:
    """Split a number into equal parts."""
    return [num // div + (1 if x < num % div else 0) for x in range(div)]

拆分示例:

assert parts(8, 3) == [3, 3, 2]
assert parts(9, 3) == [3, 3, 3]
assert parts(10, 3) == [4, 3, 3]

接下来需生成一个嵌套列表,包含0到num+3的数值,要求:

  • 偶数索引的子列表长度为1
  • 奇数索引的子列表长度取自parts函数的结果

预期输出示例:

assert expected(8, 3) == [[0], [1, 2, 3], [4], [5, 6, 7], [8], [9, 10]]
assert expected(9, 3) == [[0], [1, 2, 3], [4], [5, 6, 7], [8], [9, 10, 11]]
assert expected(10, 3) == [[0], [1, 2, 3, 4], [5], [6, 7, 8], [9], [10, 11, 12]]

本人尝试实现的actual函数如下:

def actual(num: int, div: int) -> list[list[int]]:
    matrix: list[list[int]] = []
    for i, length in enumerate(parts(num, div)):
        base = i * (length + 1)
        matrix.append([base])
        matrix.append([base + j + 1 for j in range(length)])

    return matrix

但该函数仅在num能被div整除时输出正确,非整除场景下结果错误,错误输出示例:

assert actual(8, 3) == [[0], [1, 2, 3], [4], [5, 6, 7], [6], [7, 8]]
assert actual(10, 3) == [[0], [1, 2, 3, 4], [4], [5, 6, 7], [8], [9, 10, 11]]

请问如何修复该函数,使其在所有输入场景下输出符合预期的嵌套列表?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:36:19