多个效果层分别加入时,未必共用一个结束时间。每层保存自己的到期点,才能说明为什么稍早获得的一层已经消失,稍晚获得的另一层还在。

这一篇用一组公开的自定义数据拆开计算过程。可以先遮住结果,依照约定逐项填写自己的记录,再用文末的复核办法检查。案例关注的是规则边界和状态变化,并不替任何具体作品规定玩法。

本次规则与数据

本例到期时刻本身不再生效。每次先移除到期层,再尝试添加新层;达到层数上限时,新层整次忽略,已有层的结束时间不会被刷新。

处理当前时刻前先删除到期点小于或等于现在的层;还有空位才记录新层自己的结束点。

最多4层,层编号从0开始 加入时刻[0, 2, 3, 4, 8, 10, 11, 17, 22, 23] 对应持续时间[9, 7, 2, 5, 4, 3, 7, 7, 8, 9]

按顺序处理

时刻0尝试添加第0层,持续9:接受;仍生效的“层号、到期点”为[[0, 9]]。

时刻2尝试添加第1层,持续7:接受;仍生效的“层号、到期点”为[[0, 9], [1, 9]]。

时刻3尝试添加第2层,持续2:接受;仍生效的“层号、到期点”为[[0, 9], [1, 9], [2, 5]]。

时刻4尝试添加第3层,持续5:接受;仍生效的“层号、到期点”为[[0, 9], [1, 9], [2, 5], [3, 9]]。

时刻8尝试添加第4层,持续4:接受;仍生效的“层号、到期点”为[[0, 9], [1, 9], [3, 9], [4, 12]]。

时刻10尝试添加第5层,持续3:接受;仍生效的“层号、到期点”为[[4, 12], [5, 13]]。

时刻11尝试添加第6层,持续7:接受;仍生效的“层号、到期点”为[[4, 12], [5, 13], [6, 18]]。

时刻17尝试添加第7层,持续7:接受;仍生效的“层号、到期点”为[[6, 18], [7, 24]]。

时刻22尝试添加第8层,持续8:接受;仍生效的“层号、到期点”为[[7, 24], [8, 30]]。

时刻23尝试添加第9层,持续9:接受;仍生效的“层号、到期点”为[[7, 24], [8, 30], [9, 32]]。

最后剩余层为[[7, 24], [8, 30], [9, 32]],层数3。

核对与应用

在任意观察时刻,留下的每一层都必须已经成功加入且到期点严格晚于现在。被上限拒绝的层不应出现在后续记录里,也不应延长其他层。

与“再次获得就刷新全部层的持续时间”相比,这种规则会让层数逐步减少。阅读说明时应确认究竟是哪一种;两种都能实现,但不能把一个算例的结果套到另一种规则上。

若实际观察与这个模型不同,先确认操作顺序、编号起点和边界是否包含,再检查是否漏记了前一步状态。每次只改变一个条件并保留原记录,通常比反复重做整段操作更容易找到差异。明确条件后,才适合把同一种方法应用到新的场景。