#!/bin/bash # これ以下で4桁ではないといけないと言う条件を設定します echo $1 d="${#1}" if [ $d -ne 4 ] then echo "the number should be four-digits." fi # 入力された4桁の数を、これ以下で1桁ずつに分解します n1=`expr $1 / 1000` w1=`expr $1 / 100` w2=`expr $(($n1 * 10))` n2=`expr $w1 - $w2` w3=`expr $1 / 10` w4=`expr $(($n1 * 100))` w5=`expr $(($n2 * 10))` w6=`expr $w4 + $w5` n3=`expr $w3 - $w6` w8=`expr $(($n1 * 1000))` w9=`expr $(($n2 * 100))` y1=`expr $(($n3 * 10))` y2=`expr $w8 + $w9 + $y1` n4=`expr $1 - $y2` m="${#1}" if [ $m -ne 4 ] then exit fi # 次に計算に移るのですが、下の3行を用いて演算子を+ - \* と順番に替えてもらう # というループ構造を設定します # また10を作れないときのメッセージを表示するために、変数xを設定します x=1 for e1 in + - \* ; do for e2 in + - \* ; do for e3 in + - \* ; do n5=$(($n1 $e1 $n2 $e2 $n3 $e3 $n4)) # 計算をして、答えが10になったときだけ計算式を表示させます # 先ほど設定したxに、もし足し算の答えが10なら1を足します if [ $n5 -eq 10 ] then echo "$n1 $e1 $n2 $e2 $n3 $e3 $n4" ; x=$((1 + $x)) fi done done done # これ以下で括弧を含めた場合分けを、上のループ構造と同じものを用いて表します for e1 in + - \* ; do for e2 in + - \* ; do for e3 in + - \* ; do n5=$((($n1 $e1 $n2) $e2 $n3 $e3 $n4)) if [ $n5 -eq 10 ] then echo "($n1 $e1 $n2) $e2 $n3 $e3 $n4" ; x=$((1 + $x)) fi done done done for e1 in + - \* ; do for e2 in + - \* ; do for e3 in + - \* ; do n5=$(($n1 $e1 ($n2 $e2 $n3) $e3 $n4)) if [ $n5 -eq 10 ] then echo "$n1 $e1 ($n2 $e2 $n3) $e3 $n4" ; x=$((1 + $x)) fi done done done for e1 in + - \* ; do for e2 in + - \* ; do for e3 in + - \* ; do n5=$(($n1 $e1 $n2 $e2 ($n3 $e3 $n4))) if [ $n5 -eq 10 ] then echo "$n1 $e1 $n2 $e2 ($n3 $e3 $n4)" ; x=$((1 + $x)) fi done done done for e1 in + - \* ; do for e2 in + - \* ; do for e3 in + - \* ; do n5=$((($n1 $e1 $n2 $e2 $n3) $e3 $n4)) if [ $n5 -eq 10 ] then echo "($n1 $e1 $n2 $e2 $n3) $e3 $n4" ; x=$((1 + $x)) fi done done done for e1 in + - \* ; do for e2 in + - \* ; do for e3 in + - \* ; do n5=$(($n1 $e1 ($n2 $e2 $n3 $e3 $n4))) if [ $n5 -eq 10 ] then echo "$n1 $e1 ($n2 $e2 $n3 $e3 $n4)" ; x=$((1 + $x)) fi done done done for e1 in + - \* ; do for e2 in + - \* ; do for e3 in + - \* ; do n5=$((($n1 $e1 $n2) $e2 ($n3 $e3 $n4))) if [ $n5 -eq 10 ] then echo "($n1 $e1 $n2) $e2 ($n3 $e3 $n4)" ; x=$((1 + $x)) fi done done done # 最後にxが1であるとき、つまり計算結果が1度も10にならなかったとき、特定の # メッセージを表示します if [ $x -eq 1 ] then echo "can't make 10 !" fi