一轮能推进几个
(每道题开头都有同一段:run_loop(tasks),tasks 是 [(名字, 要跑几步)];事件循环每一轮给还没完的每个任务推进一步,跑完就记完成。交回完成顺序(步数少的先完、相同按加入序);ready_count 一轮能推进几个。)
还有 a、b 两个没完的任务,问一轮能推进几个:
def run_loop(tasks):
"""事件循环:tasks 是 [(名字, 要跑几步)]。每一轮给还没完的每个任务推进一步;某任务步数跑完就记它完成。
交回任务完成的顺序(步数少的先完;步数相同按加入顺序)——单线程、确定。"""
remaining = [[name, steps] for name, steps in tasks]
done = []
while remaining:
nxt = []
for t in remaining:
t[1] -= 1
if t[1] == 0:
done.append(t[0])
else:
nxt.append(t)
remaining = nxt
return done
def ready_count(tasks):
"""一轮里能被推进的任务数(还没完的都能推进一步)——就是任务个数。"""
return len(tasks)
print(ready_count([("a", 3), ("b", 1)]))
全部评论