#!/bin/bash # q2result.txtに結果を出力するため、すでにq2result.txtファイルが存在する場合は削除する if test -e q2result.txt; then rm q2result.txt fi echo "$1 ;" # 入力された数字は$1に入っているので、その文字数の確認をする count=${#1} if test $count -ne 4 ; then echo "入力された $1 は4桁の数ではありません。" echo 'もう一度入力してください。' exit 1 fi # cutコマンドを使って、4つの数字を1つずつ変数に代入する a=`echo $1 | cut -c1` b=`echo $1 | cut -c2` c=`echo $1 | cut -c3` d=`echo $1 | cut -c4` # 以下、計算を行うにあたり、括弧の組み合わせは (ab)cd、a(bc)d、ab(cd)、(abc)d、a(bcd)、((ab)cd)、(ab)(cd)、(a(bc))d、a((bc)d)、a(b(cd))の10通り # i,j,kの3つの演算子を代入する変数を使って計算を行う # exp[0]〜exp[10]にそれぞれ計算式を代入し、全ての計算式をまとめてexpressionに代入する # 計算式の答えをanswerとおきanswerが10になる計算式を表示、q2result.txtに出力 for i in + - \* do for j in + - \* do for k in + - \* do exp[0]="$a "$i" $b "$j" $c "$k" $d" exp[1]="( $a "$i" $b ) "$j" $c "$k" $d" exp[2]="$a "$i" ( $b "$j" $c ) "$k" $d" exp[3]="$a "$i" $b "$j" ( $c "$k" $d )" exp[4]="( $a "$i" $b "$j" $c ) "$k" $d" exp[5]="$a "$i" ( $b "$j" $c "$k" $d )" exp[6]="(( $a "$i" $b ) "$j" $c ) "$k" $d" exp[7]="( $a "$i" $b ) "$j" ( $c "$k" $d )" exp[8]="( $a "$i" ( $b "$j" $c )) "$k" $d" exp[9]="$a "$i" (( $b "$j" $c ) "$k" $d )" exp[10]="$a "$i" ( $b "$j" ( $c "$k" $d ))" for expression in "${exp[@]}" do answer=`expr $(($expression))` if test $answer -eq 10 ; then echo "$expression" >> q2result.txt fi done done done done # ファイルのサイズを以下の「test -s file」で確認する # 計算式が存在する場合、q2result.txtの行数をカウントして計算式が何個あるか調べる # それ以外の場合(サイズが0のとき)は計算式が存在しないと表示する if test -s q2result.txt ; then cat < q2result.txt result_number=`wc -l < q2result.txt` echo "$result_number 個の計算式が存在します。" else echo "計算結果が10になる式は存在しません。" fi