gpt4 book ai didi

python - 返回重新排序范围以进行数据呈现的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:02 25 4
gpt4 key购买 nike

例子如下:

given: 1,2,3   [list or range of numbers]
return: 2,1,3 [reordered list]

given: 1,2,3,4,5
return: 3 1 5 2 4

given: 1,2,3,4,5,6,7
return: 4 1 7 2 6 3 5 OR 4 7 1 5 3 2 6 or similar

given: 1,2,4,5,6,7,8,9
return: 5,1,9,3,7,2,8,4,6 or similar

在渲染中,您从中心开始,然后是最极端的情况,然后变得越来越详细。这不是随机的。我在 python 中,但在 comp sci 中必须为此命名。感谢帮助。

编辑添加

偶数 -

given: 1234 
return: 2,1,4,3 OR 3,1,4,2 OR 2,4,1,3 OR 3,4,1,2

最佳答案

一个有效但不优雅的解决方案:

def sigorder(lst):
result = []
l = len(lst)
if l <= 2:
return lst
if l > 2:
result.append(lst[l/2])
result.append(lst[0])
result.append(lst[-1])
right = sigord(lst[l/2+1:-1])
left = sigord(lst[1:l/2])
result.extend(slicezip(left, right))

return result

内部递归函数:

def sigord(lst):
result = []
if len(lst) < 3:
return lst
else:
l = len(lst)
result.append(lst[l/2])
left = sigord(lst[0:l/2])
right = sigord(lst[l/2 + 1:len(lst)])
result.extend(slicezip(left, right))
return result

slicezip() (注意:方便的自动处理左右列表可能不均匀的问题)

def slicezip(a, b):
result = [0]*(len(a)+len(b))
result[::2] = a
result[1::2] = b
return result

列表长度为 4-9 的输出:

[3, 1, 4, 2]
[3, 1, 5, 2, 4]
[4, 1, 6, 2, 5, 3]
[4, 1, 7, 2, 5, 3, 6]
[5, 1, 8, 3, 6, 2, 7, 4]
[5, 1, 9, 3, 7, 2, 6, 4, 8]

关于python - 返回重新排序范围以进行数据呈现的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com