我有一个给定任务的先决条件列表。该列表由构成逻辑表达式的其他任务(使用字母作为占位符)组成。示例如下:
prereqList = [["A", "|", "B"], "&", [["C", "&", "D"], "|", "E"], "&", "F"]
我还有一个已完成任务的列表:
completedTasks = ["A", "C", "F"]
我试图从prereqList中删除已完成的任务,同时遵循条件逻辑。对于上述示例,我希望输出为:
filtered_list = ["D", "|", "E"]
到目前为止我所拥有的:
def filter_prereqs(prereqList, completedTasks):
ops = {
"&": (lambda a, b: a in completedTasks and b in completedTasks),
"|": (lambda a, b: a in completedTasks or b in completedTasks)
}
for i in range(prereqList):
if isinstance(prereqList[i], list):
filter_prereqs(prereqList[i], completedTasks)
else:
if prereqList[i] not in ops.keys():
pass
else:
conditionMet = ops[prereqList[i]](prereqList[i-1],prereqList[i+1])
if conditionMet:
我一直在想这个问题。任何帮助都将不胜感激!你知道吗
部分解决方案:
这是可行的,但只适用于“保守地用括号括起来”的表达式。换句话说,它可以解析
[["A", "&", "B"], "&", "C"]
,但不能解析["A", "&", "B", "&", "C"]
。所以我不能解析你问题中的精确表达式,但是我可以解析一个逻辑上等价的版本,它有一对额外的括号。你知道吗结果:
相关问题 更多 >
编程相关推荐