【发布时间】:2021-03-19 01:39:10
【问题描述】:
在我的游戏中,我有一个元组列表 (x,y):
solution = [(36, 37), (36, 36), (36, 35), (37, 35), (38, 35), (38, 34), (38, 33), (38, 32)]
此列表描述了玩家从点 (36, 37) 移动到点 (38, 32) 时应执行的动作。
我想将此列表简化为以下内容:
opti = [(36, 37), (36, 35), (38, 35), (38, 32)]
这意味着我想将 x 固定(或 y 固定)的任何一系列步骤减少到仅第一步和最后一步。
我正在努力找出一种算法来做到这一点。我已经尝试了两个多小时,以下是我目前正在尝试的工作:
solution = [(36, 37), (36, 36), (36, 35), (37, 35), (38, 35), (38, 34), (38, 33), (38, 32)]
opti = [solution[0]]
for i in range(len(solution)):
if opti[-1][0] == solution[i][0]:
pass
elif opti[-1][1] == solution[i][1]:
pass
else:
opti.append(solution[i])
最后 opti 等于 [(36, 37), (37, 35), (38, 34)] 这不是我想要的。有人可以指出正确的方法吗?
【问题讨论】:
-
这个
I want to reduce any series of steps where x is fixed (or y is fixed) to only the first and the last step我不清楚。为什么(36, 36)被删除而(36, 35)没有被删除? -
(36, 35) 没有被移除,因为它是 x 固定为 36 的最后一个元素。同时,(36, 35) 也标志着第二条直线的开始(其中y 固定为 35)。这意味着:第一条直线:(36, 37) 到 (36, 35),第二条直线:(36, 35) 到 (38, 35),第三条直线:(38, 35) 到 (38, 32)
-
@Gabriel OP 想要固定 x 或固定 y 运动的第一步和最后一步