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