长按音符并不是只在开头按一下就完成。把要求保持的时间段与实际按住的时间段叠加,可以看到漏掉的区间,而不仅是一个总分。重叠输入也不能被重复计时。
这份练习把数据、规则和中间状态一起列出。可以先自行推演,再与过程记录逐项比较;如果结果不同,先找到第一处分歧,确认时间单位、端点归属和运算顺序。案例是一套限定模型,不把其他作品的不同实现认定为错误。
这里不模拟任何商业作品评分,只计算目标左闭右开区间内,被至少一个按住区间覆盖的整数时间单位。目标外的按住时间不计,重叠部分只计一次,不设置宽容窗口。
目标长按[10,36),长度26 [[10, 17], [16, 23], [29, 37], [36, 44], [21, 29], [32, 40], [5, 9]]
输入0按住[10,17),落在目标内的单位起点[10, 11, 12, 13, 14, 15, 16];此前未覆盖的新单位[10, 11, 12, 13, 14, 15, 16],累计覆盖7。
输入1按住[16,23),落在目标内的单位起点[16, 17, 18, 19, 20, 21, 22];此前未覆盖的新单位[17, 18, 19, 20, 21, 22],累计覆盖13。
输入2按住[29,37),落在目标内的单位起点[29, 30, 31, 32, 33, 34, 35];此前未覆盖的新单位[29, 30, 31, 32, 33, 34, 35],累计覆盖20。
输入3按住[36,44),落在目标内的单位起点[];此前未覆盖的新单位[],累计覆盖20。
输入4按住[21,29),落在目标内的单位起点[21, 22, 23, 24, 25, 26, 27, 28];此前未覆盖的新单位[23, 24, 25, 26, 27, 28],累计覆盖26。
输入5按住[32,40),落在目标内的单位起点[32, 33, 34, 35];此前未覆盖的新单位[],累计覆盖26。
输入6按住[5,9),落在目标内的单位起点[];此前未覆盖的新单位[],累计覆盖26。
覆盖26拍,缺失0拍,连续缺口[];两者之和为26。
把目标逐单位展开,标记每个单位是否被覆盖,再合并连续缺口。覆盖长度加缺口长度必须等于目标长度,多个输入的长度总和不能直接替代并集长度。
覆盖总长度一样的两次输入,缺口位置和数量可能完全不同。若规则对中途松开有单独惩罚,不能仅用总覆盖长度判断得分;本例把缺口列出,是为了让后续评分规则有清楚的输入。
复盘时建议保留输入表和中间状态,而不仅保存最终答案。改动一个条件后重新推演,再检查起点、终点、重复值和临界输入;这样能把规则本身、计算实现和显示结果分别核对,避免把一次偶然相同当成验证完成。