linux shell 脚本 编写刑侦科推理测试题

在学习linux时,老师布置的作业要求利用shell编写刑侦推理测试题,本想着偷懒直接在度娘上复制粘贴,但发现只有java,python,js,php等语言实现了,就是没有linux下shell来编写,于是参考已经用python实现好的来翻译出shell代码。

目录

python源代码链接(点击跳转)

源码

#!/bin/bash
v2(){
local a2=$1
local a5=$2

if [[ $a2 == “A” ]] && [[ $a5 == “C” ]]
then
return 1
elif [[ $a2 == “B” ]] && [[ $a5 == “D” ]]
then
return 1
elif [[ $a2 == “C” ]] && [[ $a5 == “A” ]]
then
return 1
elif [[ $a2 == “D” ]] && [[ $a5 == “B” ]]
then
return 1
else
return 0
fi

}

v3(){
local a=$1
local a3=$2
local a6=$3
local a2=$4
local a4=$5

if [[ $a == “A” ]]
then
if [[ $a3 != $a6 ]] && [[ $a3 != $a2 ]] && [[ $a3 != $a4 ]]
then
return 1
else
return 0
fi

elif [[ $a == “B” ]]
then
if [[ $a6 != $a3 ]] && [[ $a6 != $a2 ]] && [[ $a6 != $a4 ]]
then
return 1
else
return 0
fi

elif [[ $a == “C” ]]
then
if [[ $a6 != $a3 ]] && [[ $a6 != $a2 ]] && [[ $a6 != $a4 ]]
then
return 1
else
return 0
fi

else
if [[ $a4 != $a3 ]] && [[ $a4 != $a6 ]] && [[ $a4 != $a2 ]]
then
return 1
else
return 0
fi
fi

}

v4(){
local a=$1
local a1=$2
local a5=$3
local a2=$4
local a7=$5
local a9=$6
local a6=$7
local a10=$8
if [[ $a == “A” ]]
then
if [[ $a1 == $a5 ]]
then
return 1
else
return 0
fi

elif [[ $a == “B” ]]
then
if [[ $a2 == $a7 ]]
then
return 1
else
return 0
fi

elif [[ $a == “C” ]]
then
if [[ $a1 == $a9 ]]
then
return 1
else
return 0
fi

else
if [[ $a6 == $a10 ]]
then
return 1
else
return 0
fi
fi

}

v5(){
local a=$1
local a8=$2
local a4=$3
local a9=$4
local a7=$5

if [[ $a == “A” ]]
then
if [[ $a == $a8 ]]
then
return 1
else
return 0
fi

elif [[ $a == “B” ]]
then
if [[ $a == $a4 ]]
then
return 1
else
return 0
fi

elif [[ $a == “C” ]]
then
if [[ $a == $a9 ]]
then
return 1
else
return 0
fi

else
if [[ $a == $a7 ]]
then
return 1
else
return 0
fi
fi

}

v6(){

local a=$1
local a8=$2
local a2=$3
local a4=$4
local a1=$5
local a6=$6
local a3=$7
local a10=$8
local a5=$9
local a9=$10

if [[ $a == “A” ]]
then
if [[ $a8 == $a2 ]] && [[ $a8 == $a4 ]]
then
return 1
else
return 0
fi

elif [[ $a == “B” ]]
then
if [[ $a8 == $a1 ]] && [[ $a8 == $a6 ]]
then
return 1
else
return 0
fi

elif [[ $a == “C” ]]
then
if [[ $a8 == $a3 ]] && [[ $a8 == $a10 ]]
then
return 1
else
return 0
fi

else
if [[ $a8 == $a5 ]] && [[ $a8 == $a9 ]]
then
return 1
else
return 0
fi
fi
}

v7(){
local a1=$1
local a2=$2
local a3=$3
local a4=$4
local a5=$5
local a6=$6
local a7=$7
local a8=$8
local a9=$9
local a10=${10}

stats=(0 0 0 0)
return_answer=(“A” “B” “C” “D”)
answer=($a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 ${a10})
for i in ${answer[@]}
do
result=$((16#${i}-0xA))
let stats[result]+=1
done

MIN=${stats[0]}

for I in ${!stats[@]};do

if [[ ${MIN} -ge ${stats[${I}]} ]];then

MIN=${stats[${I}]}
fi
done

for i in `seq 0 $((${#stats[*]}-1))`
do
if [[ ${stats[${i}]} == ${MIN} ]]
then
minA=${return_answer[$i]}

fi
done

if [[ $a7 == “A” ]]
then
if [[ ${minA} == “C” ]]
then
return 1
else
return 0
fi

elif [[ $a7 == “B” ]]
then
if [[ ${minA} == “B” ]]
then
return 1
else
return 0
fi

elif [[ $a7 == “C” ]]
then
if [[ $minA == “A” ]]
then
return 1
else
return 0
fi
else
if [[ ${minA} == “D” ]]
then
return 1
else
return 0
fi
fi
}

v8(){
local a8=$1
local a1=$2
local a7=$3
local a5=$4
local a2=$5
local a10=$6
answer1=$((16#${a1}))

b1=$((16#${a7}-$((16#${a1}))))
b2=${b1#-}

c1=$((16#${a5}-$((16#${a1}))))
c2=${c1#-}

d1=$((16#${a2}-$((16#${a1}))))
d2=${d1#-}

e1=$((16#${a10}-$((16#${a1}))))
e2=${e1#-}

if [[ $a8 == “A” ]]
then
if [[ $b2 != 1 ]]
then
return 1
else
return 0
fi
elif [[ $a8 == “B” ]]
then
if [[ $c2 != 1 ]]
then
return 1
else
return 0
fi

elif [[ $a8 == “C” ]]
then
if [[ $d2 != 1 ]]
then
return 1
else
return 0
fi
else
if [[ $e2 != 1 ]]
then
return 1
else
return 0
fi

fi
}

v9(){
local a9=$1
local a6=$2
local a5=$3
local a10=$4
local a2=$5
local a1=$6

if [[ $a9 == “A” ]]
then
if [[ $a6 == $a5 ]]
then
valY=1
else
valY=0
fi

elif [[ $a9 == “B” ]]
then
if [[ $a10 == $a5 ]]
then
valY=1
else
valY=0
fi

elif [[ $a9 == “C” ]]
then

if [[ $a2 == $a5 ]]
then
valY=1
else
valY=0
fi

else
if [[ $a9 == $a5 ]]
then
valY=1
else
valY=0
fi
fi

if [[ $a1 == $a6 ]]
then
valX=1
else
valX=0
fi

if [[ $valX != $valY ]]
then
return 1
else
return 0
fi

}

v10(){
local a1=$1
local a2=$2
local a3=$3
local a4=$4
local a5=$5
local a6=$6
local a7=$7
local a8=$8
local a9=$9
local a10=${10}

stats=(0 0 0 0)
return_answer=(“A” “B” “C” “D”)
answer=($a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 ${a10})
for i in ${answer[@]}
do
result=$((16#${i}-0xA))
let stats[result]+=1
done

MIN=${stats[0]}

for I in ${!stats[@]};do

if [[ ${MIN} -ge ${stats[${I}]} ]];then

MIN=${stats[${I}]}
fi
done

MAX=${stats[0]}

for I in ${!stats[@]};do

if [[ ${MAX} -le ${stats[${I}]} ]];then

MAX=${stats[${I}]}
fi
done

diff=$(($MAX-$MIN))

if [[ $a10 == “A” ]]
then
if [[ $diff = 3 ]]
then
return 1
else
return 0
fi

elif [[ $a10 == “B” ]]
then
if [[ $diff = 2 ]]
then
return 1
else
return 0
fi

elif [[ $a10 == “C” ]]
then
if [[ $diff = 4 ]]
then
return 1
else
return 0
fi

else

if [[ $diff = 1 ]]
then
return 1
else
return 0
fi

fi

}

verify(){
local a1=$1
local a2=$2
local a3=$3
local a4=$4
local a5=$5
local a6=$6
local a7=$7
local a8=$8
local a9=$9
local a10=${10}

v2 $a2 $a5
b=$?

if [[ $b = 0 ]]
then
return 0
fi

v3 $a3 $a3 $a6 $a2 $a4
c=$?

if [[ $c = 0 ]]
then
return 0
fi

v4 $a4 $a1 $a5 $a2 $a7 $a9 $a6 ${a10}
d=$?

if [[ $d = 0 ]]
then
return 0
fi

v5 $a5 $a8 $a4 $a9 $a7
e=$?

if [[ $e = 0 ]]
then
return 0
fi

v6 $a6 $a8 $a2 $a4 $a1 $a6 $a3 $a10 $a5 $a9
f=$?

if [[ $f = 0 ]]
then
return 0
fi

v7 $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 ${a10}
g=$?

if [[ $g = 0 ]]
then
return 0
fi

v8 $a8 $a1 $a7 $a5 $a2 ${a10}
h=$?

if [[ $h = 0 ]]
then
return 0
fi

v9 ${a9} $a6 $a5 ${a10} $a2 $a1
i=$?

if [[ $i = 0 ]]
then
return 0
fi

v10 $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 ${a10}
j=$?

if [[ $j = 0 ]]
then
return 0
fi

return 1

}

arr=(‘A’ ‘B’ ‘C’ ‘D’)

for a1 in ${arr[@]}
do
for a2 in ${arr[@]}
do
for a3 in ${arr[@]}
do
for a4 in ${arr[@]}
do
for a5 in ${arr[@]}
do
for a6 in ${arr[@]}
do
for a7 in ${arr[@]}
do
for a8 in ${arr[@]}
do
for a9 in ${arr[@]}
do
for a10 in ${arr[@]}
do
verify $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 ${a10}

result=$?

if [[ $result = 1 ]]
then
echo $a1 $a2 $a3 $a4 $a5 $a6 $a7 $a8 $a9 ${a10}
exit 0
fi

done
done
done
done
done
done
done
done
done
done

结果

答案:B, C, A, C, A, C, D, A, B, A

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容