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