二分实际测了几次
七次提交,第 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)))
全部评论