有一个 8 升的瓶子装满水,还有一个 5 升的空瓶子和一个 3 升的空瓶子。
要求将水分成两个 4 升。
运行脚本之后要生产类似这样的解决方案:
Your containers: 8 5 3
Solution1 step0: 8–>0–>0
Solution1 step1: 3–>5–>0
Solution1 step2: 3–>2–>3
Solution1 step3: 6–>2–>0
Solution1 step4: 6–>0–>2
Solution1 step5: 1–>5–>2
Solution1 step6: 1–>4–>3
Solution1 step7: 4–>4–>0
#!/bin/bash
cup_tol=(8 5 3)
cup=(8 0 0)
temp=0
n=0
j=0
for ((i=0;i<8;i++))
do
((i==3?j++:0))
((i==4?j++:0))
nowi=$((j%3))
next=$(((j+1)%3))
echo "Solutionl step$i: ${cup[0]}-->${cup[1]}-->${cup[2]}"
(( temp=cup[nowi]-(cup_tol[next]-cup[next]) ))
if [ $temp -ge 0 ];then
let cup[nowi]=temp
let cup[next]=cup_tol[next]
else
let cup[next]+=cup[nowi]
let cup[nowi]=0
fi
let j++
done