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