注文があります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
成功します。
これを行うには、バイナリ検索を使用します。まず、終了コードが変更されるまで値を2倍にし、最後の2つの値の間でバイナリ検索を実行します。