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