僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
まずはこれで。
$ n[1]=10 $ n[2]=2 $ for x in + - \* / > do echo -n ${n[1]}${x}${n[2]}= > echo ${n[1]} "$x" ${n[2]} \ | > bc > done 10+2=12 10-2=8 10*2=20 10/2=5
1 から 9に演算子を入れて100にする問題は
解けた。
想定したとおり、かなり遅いけど(以下、
i3-4130 3.40GHz にメモリ4GBのartfulにて) 。
$ time bash dumb.sh 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 * 9 = 100 1 + 2 + 3 - 4 * 5 + 6 * 7 + 8 * 9 = 100 1 + 2 - 3 * 4 + 5 * 6 + 7 + 8 * 9 = 100 1 + 2 - 3 * 4 - 5 + 6 * 7 + 8 * 9 = 100 1 + 2 * 3 + 4 * 5 - 6 + 7 + 8 * 9 = 100 1 + 2 * 3 * 4 * 5 / 6 + 7 + 8 * 9 = 100.00000000000000000000 1 - 2 + 3 * 4 * 5 + 6 * 7 + 8 - 9 = 100 1 - 2 + 3 * 4 * 5 - 6 + 7 * 8 - 9 = 100 1 - 2 * 3 + 4 * 5 + 6 + 7 + 8 * 9 = 100 1 - 2 * 3 - 4 + 5 * 6 + 7 + 8 * 9 = 100 1 - 2 * 3 - 4 - 5 + 6 * 7 + 8 * 9 = 100 1 * 2 * 3 + 4 + 5 + 6 + 7 + 8 * 9 = 100 1 * 2 * 3 - 4 * 5 + 6 * 7 + 8 * 9 = 100 1 * 2 * 3 * 4 + 5 + 6 + 7 * 8 + 9 = 100 1 * 2 * 3 * 4 + 5 + 6 - 7 + 8 * 9 = 100 real 1m50.571s user 1m56.217s sys 0m24.385s
if [ $total = 100 -o $total = 100.00000000000000000000 ]; then
整数でない解一つ(100.00000000000000000000)を条件分岐に 放り込んだのはあまり良くなかったかも。
少し書き換える。少し遅くなったようだ。
$ time python3 dumb.py . 1 * 2 * 3 * 4 + 5 + 6 + 7 * 8 + 9 = 100 1 * 2 * 3 * 4 + 5 + 6 - 7 + 8 * 9 = 100 real 0m0.894s user 0m0.890s sys 0m0.004s
$ time python3 d2.py . 1 * 2 * 3 * 4 + 5 + 6 + 7 * 8 + 9 = 100 1 * 2 * 3 * 4 + 5 + 6 - 7 + 8 * 9 = 100 real 0m0.979s user 0m0.971s sys 0m0.008s
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。