数探しシェルスクリプト

ナンバープレートの4つの数字から四則演算で「10」を求める遊びをやったことがあると思います。


今回は、任意の個数の数字から、指定された値を四則演算で求める計算式を出してくれるシェルスクリプトを作成しました。
https://github.com/cupnes/sh/blob/master/find_num.sh

使い方

「百聞は一見にしかず」ということで、まずは使い方を。


上述のGitHubのリンク先から「find_num.sh」をダウンロードし、実行権限をつけてください。


その後、以下のように使います。
例) 「1 2 3 4」の4つの数字の四則演算で「10」が得られる計算式を求める。

$ ./find_num.sh 10 1 2 3 4
1 + 2 + 3 + 4 = 10
1 * 2 * 3 + 4 = 10


例を見ればわかると思いますが、引数の意味は以下のとおりです。

第1引数 計算で求めたい値
第2引数以降 計算に用いる数値

注意事項

引数のエラーチェックはしていませんので、必ず2個以上の引数を与えるようにしてください。
引数1個以下で実行してしまった場合には、「Ctrl-C」で終了してください。
追記:2014/07/26 22:27
修正しました。与えられた引数が1個以下の場合はUsageを表示します。


また、得られる計算式は単純に四則演算を組み合わせたもののみです。
ナンバープレートの遊びの場合は「括弧」を使ったりもすると思いますが、
括弧には対応していません。


計算結果が小数を含む場合は、小数点以下を切り捨てて「求めたい値」と比較しています。

$ ./find_num.sh 10 4 5 6 7
4 + 5 - 6 + 7 = 10
4 - 5 / 6 + 7 = 10
4 * 5 / 6 + 7 = 10

この場合、「4 * 5 / 6 + 7 = 10.333..」なのですが結果に含まれています。

やってること

シェルスクリプト再帰関数を使うサンプルにもなってます。