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