多个效果层分别加入时,未必共用一个结束时间。每层保存自己的到期点,才能说明为什么稍早获得的一层已经消失,稍晚获得的另一层还在。
这一篇用一组公开的自定义数据拆开计算过程。可以先遮住结果,依照约定逐项填写自己的记录,再用文末的复核办法检查。案例关注的是规则边界和状态变化,并不替任何具体作品规定玩法。
本次规则与数据
本例到期时刻本身不再生效。每次先移除到期层,再尝试添加新层;达到层数上限时,新层整次忽略,已有层的结束时间不会被刷新。
处理当前时刻前先删除到期点小于或等于现在的层;还有空位才记录新层自己的结束点。
最多4层,层编号从0开始 加入时刻[3, 4, 5, 9, 12, 15, 18, 20, 21, 22] 对应持续时间[8, 2, 3, 7, 5, 2, 7, 3, 6, 7]
按顺序处理
时刻3尝试添加第0层,持续8:接受;仍生效的“层号、到期点”为[[0, 11]]。
时刻4尝试添加第1层,持续2:接受;仍生效的“层号、到期点”为[[0, 11], [1, 6]]。
时刻5尝试添加第2层,持续3:接受;仍生效的“层号、到期点”为[[0, 11], [1, 6], [2, 8]]。
时刻9尝试添加第3层,持续7:接受;仍生效的“层号、到期点”为[[0, 11], [3, 16]]。
时刻12尝试添加第4层,持续5:接受;仍生效的“层号、到期点”为[[3, 16], [4, 17]]。
时刻15尝试添加第5层,持续2:接受;仍生效的“层号、到期点”为[[3, 16], [4, 17], [5, 17]]。
时刻18尝试添加第6层,持续7:接受;仍生效的“层号、到期点”为[[6, 25]]。
时刻20尝试添加第7层,持续3:接受;仍生效的“层号、到期点”为[[6, 25], [7, 23]]。
时刻21尝试添加第8层,持续6:接受;仍生效的“层号、到期点”为[[6, 25], [7, 23], [8, 27]]。
时刻22尝试添加第9层,持续7:接受;仍生效的“层号、到期点”为[[6, 25], [7, 23], [8, 27], [9, 29]]。
最后剩余层为[[6, 25], [7, 23], [8, 27], [9, 29]],层数4。
核对与应用
在任意观察时刻,留下的每一层都必须已经成功加入且到期点严格晚于现在。被上限拒绝的层不应出现在后续记录里,也不应延长其他层。
与“再次获得就刷新全部层的持续时间”相比,这种规则会让层数逐步减少。阅读说明时应确认究竟是哪一种;两种都能实现,但不能把一个算例的结果套到另一种规则上。
若实际观察与这个模型不同,先确认操作顺序、编号起点和边界是否包含,再检查是否漏记了前一步状态。每次只改变一个条件并保留原记录,通常比反复重做整段操作更容易找到差异。明确条件后,才适合把同一种方法应用到新的场景。
