#!/bin/bash # これ以下で4桁ではないといけないと言う条件を設定します echo $1 if [ $1 -gt 9999 ] then echo "the number must be four-digits." elif [ $1 -lt 1000 ] then echo "the number must be four-digits." fi # 入力された4桁の数を、これ以下で1桁ずつに分解します n1=`expr $1 / 1000` n2=`expr $(($1 - $(($n1 * 1000)))) / 100` n3=`expr $(($1 - $(($n1 * 1000)) - $(($n2 * 100)))) / 10` n4=`expr $(($1 - $(($n1 * 1000)) - $(($n2 * 100)) -$(($n3 * 10))))` if [ $n1 -gt 9 ] 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