一轮能推进几个

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段: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)]))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论