二分实际测了几次

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

七次提交,第 1 次是好的、第 7 次是坏的,bug 从第 4 次开始出现。运行下面这段程序:

def bisect(ids, is_bad):
    good = 0
    bad = len(ids) - 1
    tried = []
    while bad - good > 1:
        mid = (good + bad) // 2
        tried.append(ids[mid])
        if is_bad(ids[mid]):
            bad = mid
        else:
            good = mid
    return ids[bad], tried

ids = [h for h, _ in [('a11c3f2', '初始化项目'), ('b22d4e0', '加上加法'),
        ('c33e5f8', '加上减法'), ('d44f6a1', '加上除法'),
        ('e55a7b2', '加上取模'), ('f66b8c3', '改进提示文案'),
        ('g77c9d4', '加上开方')]]
bad_from = ids.index("d44f6a1")
found, tried = bisect(ids, lambda x: ids.index(x) >= bad_from)
print(found + "/" + str(len(tried)))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论