我有一个命令cmd
。cmd 1
成功,但cmd 10000000
失败。
cmd
对于所有 n < X 都会成功,对于所有 n > X 都会失败。
有没有一个工具可以进行二分查找来找到值X?
答案1
find-first-fail
(https://gitlab.com/ole.tange/tangetools/-/blob/master/find-first-fail/find-first-fail) 是在 中实现的bash
。它可以作为命令调用:
find-first-fail cmd
或者可以获取 - 在这种情况下cmd
可以是一个函数:
. $(which find-first-fail)
find-first-fail cmd
find-first-fail
首先运行cmd 1
。如果失败,它将寻找成功的最小值cmd
。否则它将寻找失败的最小值cmd
。
cmd 1
因此,如果失败,它也会找到 X ,然后cmd 1000000
成功。
它使用二分搜索来执行此操作:首先,它将值加倍,直到退出代码更改,然后在最后两个值之间进行二分搜索。