我需要一个算法,它给定一个列表L
和一个数字N
,返回一个N
较小列表的列表,其中子列表是“平衡的”。示例:
algo(range(1, 8), 3) -> [[1,2,3], [4,5], [6,7]]
algo(range(1, 6), 4) -> [[1,2], [3], [4], [5]]
algo(range(1, 12), 5) -> [[1,2,3], [4,5], [6,7], [8,9], [10, 11]]
如您所见,算法应该“偏好”输出中的第一个列表。在
我已经试了好几个小时了,但是我找不到一个好的简洁的算法。顺便说一句,这将在Python中实现,但这确实是我在这里所追求的算法。这是不是家庭作业,这是一个网站,它将在三列列表中显示内容(Django)。在
我从#python on freenode得到了最好的答案,如下所示:
^{pr2}$不过,别问我为什么有用。:)不过,我会给票数最多的人一个正确的答案。在
假设您希望输出尽可能包含长度相等的列表,否则优先选择开头的列表。子列表长度之差不超过一个。在
这是我想出的代码,没有分类。只是在第一排序()如果输入未排序。在
我认为这个结果很好,使用迭代器并使用islice截断下一个部分。在
如果我理解你的问题。。。你只需要为mod(n)下的每个列表添加一项,其中有algo(范围(a,b),n)
所以你应该:
相关问题 更多 >
编程相关推荐