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