#!/bin/bash #countの桁数が4桁でない場合、「数字は4桁でないといけない」と出るようにします。 count=${#1} if test $count -ne 4 then echo "the number must be four-digits" fi #入力された4桁の数字をそれぞれ4つの数字に分けます。 n1=`echo $1 | cut -c1` n2=`echo $1 | cut -c2` n3=`echo $1 | cut -c3` n4=`echo $1 | cut -c4` echo "$n1,$n2,$n3,$n4" #結果を出すためのファイル(quiz2.txt)が既に書き出されているのならば、それを白紙にします。 if test -e quiz2.txt ; then cat /dev/null >quiz2.txt fi #ここからは、計算していきます。()の置き方で11通りあるので、11回同じような演算を繰り替えしていきます。 ここで、11通りの()の置き方とは、 abcd,(ab)cd,ab(cd),(ab)(cd),(abc)d,a(bcd),a(bc)d,((ab)c)d,a(b(cd)),(a(bc))d,a((bc)d) の場合を指します。 以下の演算で、i,j,kの場所には、記号(+,-,*)が入る。入り方はそれぞれの場合で27通りある。 #abcdの場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $n1 $i $n2 $j $n3 $k $n4 )) if [ $ans = 10 ] ;then echo " $n1 $i $n2 $j $n3 $k $n4 " >>quiz2.txt fi done done done #(ab)cdの場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $(( $n1 $i $n2 )) $j $n3 $k $n4 )) if [ $ans = 10 ] ;then echo " ( $n1 $i $n2 ) $j $n3 $k $n4 " >>quiz2.txt fi done done done #ab(cd)の場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $n1 $i $n2 $j $(( $n3 $k $n4 )) )) if [ $ans = 10 ] ;then echo " $n1 $i $n2 $j ($n3 $k $n4) " >>quiz2.txt fi done done done #(ab)(cd)の場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $(($n1 $i $n2 )) $j $(( $n3 $k $n4 )) )) if [ $ans = 10 ] ;then echo " ($n1 $i $n2 ) $j ( $n3 $k $n4 ) " >>quiz2.txt fi done done done #(abc)dの場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $(( $n1 $i $n2 $j $n3 )) $k $n4 )) if [ $ans = 10 ] ;then echo " ( $n1 $i $n2 $j $n3 )$k $n4 " >>quiz2.txt fi done done done #a(bcd)の場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $n1 $i $(( $n2 $j $n3 $k $n4 )) )) if [ $ans = 10 ] ;then echo " $n1 $i ( $n2 $j $n3 $k $n4 ) " >>quiz2.txt fi done done done #a(bc)dの場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $n1 $i $(( $n2 $j $n3 )) $k $n4 )) if [ $ans = 10 ] ;then echo " $n1 $i ( $n2 $j $n3 ) $k $n4 " >>quiz2.txt fi done done done #((ab)c)dの場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $(( $(( $n1 $i $n2 )) $j $n3 )) $k $n4 )) if [ $ans = 10 ] ;then echo " ( ( $n1 $i $n2 ) $j $n3 ) $k $n4 " >>quiz2.txt fi done done done #a(b(cd))の場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $n1 $i $(( $n2 $j $(( $n3 $k $n4)) )) )) if [ $ans = 10 ] ;then echo " $n1 $i ( $n2 $j ( $n3 $k $n4 ) ) " >>quiz2.txt fi done done done #(a(bc))dの場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $(( $n1 $i $(( $n2 $j $n3)) )) $k $n4 )) if [ $ans = 10 ] ;then echo " ( $n1 $i ( $n2 $j $n3 ) ) $k $n4 " >>quiz2.txt fi done done done #a((bc)d)の場合 for i in + - '*' do for j in + - '*' do for k in + - '*' do ans=$(( $n1 $i $(( $(( $n2 $j $n3 )) $k $n4 )) )) if [ $ans = 10 ] ;then echo " $n1 $i ( ( $n2 $j $n3 ) $k $n4 ) " >>quiz2.txt fi done done done #catで実際に作らせた式を表示させる。 #ここで、10を作る式を作れなかったならば、この数字では10を作れませんという文章を表示させる。 if test -s quiz2.txt then cat quiz2.txt else echo "Can't Make 10" fi