一个道具被多次触发提示,并不代表收集到了多个不同道具。对要求不同收集物的任务,保存已经领取的唯一标识比只累计触发次数更可靠,也方便处理重复接触和读档后的回调。

下面使用一组独立练习数据,说明输入、规则、处理顺序和输出之间的关系。建议先遮住结果自己推演,再逐步对照;如果出现差异,应先定位第一处不同,并检查边界条件,不要只把最后的答案改成一样。

规则和数据

本例A至J代表十个不同收集物,开始时已经拥有其中两个。每次触发一个标识,只有此前没有拥有的才增加进度。达到目标数量后仍保留完整集合,不消费收集物,也不会重复发放任何奖励。

起始收集物['C', 'J'],要求7种 触发次序['H', 'C', 'D', 'B', 'E', 'D', 'G', 'C', 'F', 'A', 'I', 'I', 'J', 'J', 'A', 'F', 'A']

逐步推演

第1次触发H:首次拥有,进度增加;现在3/7,目标尚未满足。

第2次触发C:已拥有,忽略重复;现在3/7,目标尚未满足。

第3次触发D:首次拥有,进度增加;现在4/7,目标尚未满足。

第4次触发B:首次拥有,进度增加;现在5/7,目标尚未满足。

第5次触发E:首次拥有,进度增加;现在6/7,目标尚未满足。

第6次触发D:已拥有,忽略重复;现在6/7,目标尚未满足。

第7次触发G:首次拥有,进度增加;现在7/7,目标已满足。

第8次触发C:已拥有,忽略重复;现在7/7,目标已满足。

第9次触发F:首次拥有,进度增加;现在8/7,目标已满足。

第10次触发A:首次拥有,进度增加;现在9/7,目标已满足。

第11次触发I:首次拥有,进度增加;现在10/7,目标已满足。

第12次触发I:已拥有,忽略重复;现在10/7,目标已满足。

第13次触发J:已拥有,忽略重复;现在10/7,目标已满足。

第14次触发J:已拥有,忽略重复;现在10/7,目标已满足。

第15次触发A:已拥有,忽略重复;现在10/7,目标已满足。

第16次触发F:已拥有,忽略重复;现在10/7,目标已满足。

第17次触发A:已拥有,忽略重复;现在10/7,目标已满足。

最终拥有['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'],新增8种,重复触发9次。

如何复核与应用

对操作记录的每个前缀求不同标识的集合,再与起始集合合并。集合大小应等于当时进度;调换重复触发的先后不应改变最后结果,但首次达到目标的时刻可能不同。

唯一标识需要在重复接触时保持稳定,若每次接触都临时生成新标识,集合也无法识别重复。本例特意把物体身份与触发次数分开,让任务进度的含义保持一致。

这是一套明确限定的教学模型,实际作品可能采用其他约定。记录实验时,保留原始输入、每步状态以及规则版本;调整一个条件后重新演算,并检查起点、终点、重复输入和刚好位于边界的情况,才能知道差异来自设计还是计算。