这篇练习围绕食品批次的到期取用,提供一份独立的虚构数据,用完整记录说明怎样从规则走到结果。它不依赖任何品牌或具体产品;实际游戏规则可能不同,不能把这里的示例直接当成通用设定。建议先自己推演,再核对每一步,重点是掌握判断依据而不是记住本次答案。
同类食品需要同时记录数量与到期时刻。优先使用先到期批次,能解释为什么剩余总数相同的两个背包,在稍后的行动里仍可能出现不同结果。
本例到期时刻等于当前时刻也算过期。清除过期品之后才满足需求,缺少的数量不带到下一次。
批次编号0至4,先清掉到期时刻不大于当前时刻的食品,再按到期早者优先、同到期编号小者优先取用。未满足需求不结转。
批次0:数量8,到期7 批次1:数量3,到期11 批次2:数量7,到期4 批次3:数量4,到期8 批次4:数量2,到期6 需求时刻3,数量6 需求时刻5,数量3 需求时刻8,数量4 需求时刻12,数量4 需求时刻13,数量3 需求时刻14,数量1 需求时刻15,数量1
时刻3需6份:到期移除0份,取用批次与数量[[2, 6]],缺少0份,各批库存[8, 3, 1, 4, 2]。
时刻5需3份:到期移除1份,取用批次与数量[[4, 2], [0, 1]],缺少0份,各批库存[7, 3, 0, 4, 0]。
时刻8需4份:到期移除11份,取用批次与数量[[1, 3]],缺少1份,各批库存[0, 0, 0, 0, 0]。
时刻12需4份:到期移除0份,取用批次与数量[],缺少4份,各批库存[0, 0, 0, 0, 0]。
时刻13需3份:到期移除0份,取用批次与数量[],缺少3份,各批库存[0, 0, 0, 0, 0]。
时刻14需1份:到期移除0份,取用批次与数量[],缺少1份,各批库存[0, 0, 0, 0, 0]。
时刻15需1份:到期移除0份,取用批次与数量[],缺少1份,各批库存[0, 0, 0, 0, 0]。
最后各批库存[0, 0, 0, 0, 0],合计0份。
初始总量必须等于累计到期移除、累计实际取用、最终库存之和。再检查每个批次非负,能发现总量正确但批次分配错误的情况。
复盘时记录输入、操作前状态、操作后状态,先找到第一处与示例不同的位置。检查条件、单位、边界和更新顺序,不要只改最终数字。对“相等”“严格超过”“先处理哪一项”等表述,逐字落实到记录里;如果规则没有说明某个边界,先补充明确约定再继续。
完成后只改一条输入,先预测后续哪些记录会变,再重新计算。保留没有改变的部分作为对照,有助于区分机制变化与偶然数字变化。换到真实游戏时,可以在帮助说明或可重复的小场景中确认对应规则,再用同样的记录方法核对,不要凭单次表现认定机制。