制作时要求持有某件工具,不一定表示每次都要消耗这件工具。把前置条件和实际扣除量混在一起,会使连续制作数量看起来少于预期。
下面是一组独立的虚构游戏输入与逐步结果。先记录单位、编号和端点是否包含,再尝试自己推算,最后对照第一处差异。所有结论都以本例规则为前提;其他作品采用不同约定时,应按它自己的说明重新计算。
本例规则与数据
每个独立试验给出材料甲乙、工具数量、已有成品和请求批数。每批消耗固定甲乙并产出固定成品,工具只要求达到门槛而不消耗。请求必须整批满足,否则所有库存保持;没有工具损坏或制作时间。
每批甲3、乙3,工具门槛2,产出5 [[23, 5, 0, 7, 2], [11, 11, 4, 0, 3], [10, 19, 3, 1, 3], [24, 17, 3, 11, 1], [8, 4, 1, 6, 6], [5, 1, 4, 12, 3], [15, 0, 0, 2, 5], [10, 0, 3, 1, 2], [22, 5, 2, 2, 1], [9, 7, 4, 2, 3], [6, 0, 2, 1, 5], [12, 16, 0, 5, 6]]
过程记录
甲乙工具成品为[23, 5, 0, 7],请求2批;工具条件0>=2为False,可做上限0,整批拒绝后库存[23, 5, 0, 7]。
甲乙工具成品为[11, 11, 4, 0],请求3批;工具条件4>=2为True,可做上限3,整批成功后库存[2, 2, 4, 15]。
甲乙工具成品为[10, 19, 3, 1],请求3批;工具条件3>=2为True,可做上限3,整批成功后库存[1, 10, 3, 16]。
甲乙工具成品为[24, 17, 3, 11],请求1批;工具条件3>=2为True,可做上限5,整批成功后库存[21, 14, 3, 16]。
甲乙工具成品为[8, 4, 1, 6],请求6批;工具条件1>=2为False,可做上限0,整批拒绝后库存[8, 4, 1, 6]。
甲乙工具成品为[5, 1, 4, 12],请求3批;工具条件4>=2为True,可做上限0,整批拒绝后库存[5, 1, 4, 12]。
甲乙工具成品为[15, 0, 0, 2],请求5批;工具条件0>=2为False,可做上限0,整批拒绝后库存[15, 0, 0, 2]。
甲乙工具成品为[10, 0, 3, 1],请求2批;工具条件3>=2为True,可做上限0,整批拒绝后库存[10, 0, 3, 1]。
甲乙工具成品为[22, 5, 2, 2],请求1批;工具条件2>=2为True,可做上限1,整批成功后库存[19, 2, 2, 7]。
甲乙工具成品为[9, 7, 4, 2],请求3批;工具条件4>=2为True,可做上限2,整批拒绝后库存[9, 7, 4, 2]。
甲乙工具成品为[6, 0, 2, 1],请求5批;工具条件2>=2为True,可做上限0,整批拒绝后库存[6, 0, 2, 1]。
甲乙工具成品为[12, 16, 0, 5],请求6批;工具条件0>=2为False,可做上限0,整批拒绝后库存[12, 16, 0, 5]。
十二次独立请求中4次成功,所有试验工具数量均未因制作减少。
独立核对与实际应用
先只按甲乙库存算最多可完成批数,再检查工具条件是否满足;工具不足则上限为零。成功请求按批数核对材料减少和成品增加,工具数量始终不变。
本例的工具数量只是一个明确的条件,不暗示所有制作系统都不会损耗工具。若实际规则含耐久、借用或制作时锁定工具,必须另计那些约束。整批拒绝也不同于尽量制作一部分,失败不能悄悄扣掉部分材料。
测试时先保留输入和中间状态,再只改变一个条件。空状态、正好相等、重复出现和最后一步都值得单独检查。若最终结果不符,应从第一处偏差查起,而不是在末尾随意增加补偿让数字表面一致。
