记录一个shell脚本的题目——8升水平均分

有一个 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值