格子蛇移动时,目标若恰好是本轮即将移走的尾格,能否进入取决于本轮是否增长。把整条旧身体都当作不可进入区域,可能错误拦截一次合法移动。
以下是一组输入完整的独立案例。先读清规则,再按时间或操作顺序记录中间状态;遇到与预期不同的结果时,检查首次出现差异的位置。案例使用明确限定的教学模型,不假定所有作品都采用相同的处理方式。
规则和原始数据
身体列表从头到尾排列,一次只移动到四邻格。本例不增长时尾格先腾空,再检查新头;增长时尾格保留。撞墙或撞到仍占用的身体则拒绝本次动作,状态保持,练习继续。
地图6×6,坐标从零开始 初始身体[[1, 2], [1, 3], [2, 3], [2, 2]] [横向方向,纵向方向,是否增长]:[[1, 0, True], [0, -1, False], [-1, 0, False], [-1, 0, False], [0, 1, True], [0, 1, False], [1, 0, False], [1, 0, True], [0, -1, False], [0, -1, True], [-1, 0, False], [0, -1, True], [1, 0, False], [1, 0, False]]
逐步记录
动作1方向(1,0),增长True,目标[2, 2],原尾格[2, 2];拒绝并保持原状态,新身体从头到尾为[[1, 2], [1, 3], [2, 3], [2, 2]]。
动作2方向(0,-1),增长False,目标[1, 1],原尾格[2, 2];通过,新身体从头到尾为[[1, 1], [1, 2], [1, 3], [2, 3]]。
动作3方向(-1,0),增长False,目标[0, 1],原尾格[2, 3];通过,新身体从头到尾为[[0, 1], [1, 1], [1, 2], [1, 3]]。
动作4方向(-1,0),增长False,目标[-1, 1],原尾格[1, 3];拒绝并保持原状态,新身体从头到尾为[[0, 1], [1, 1], [1, 2], [1, 3]]。
动作5方向(0,1),增长True,目标[0, 2],原尾格[1, 3];通过,新身体从头到尾为[[0, 2], [0, 1], [1, 1], [1, 2], [1, 3]]。
动作6方向(0,1),增长False,目标[0, 3],原尾格[1, 3];通过,新身体从头到尾为[[0, 3], [0, 2], [0, 1], [1, 1], [1, 2]]。
动作7方向(1,0),增长False,目标[1, 3],原尾格[1, 2];通过,新身体从头到尾为[[1, 3], [0, 3], [0, 2], [0, 1], [1, 1]]。
动作8方向(1,0),增长True,目标[2, 3],原尾格[1, 1];通过,新身体从头到尾为[[2, 3], [1, 3], [0, 3], [0, 2], [0, 1], [1, 1]]。
动作9方向(0,-1),增长False,目标[2, 2],原尾格[1, 1];通过,新身体从头到尾为[[2, 2], [2, 3], [1, 3], [0, 3], [0, 2], [0, 1]]。
动作10方向(0,-1),增长True,目标[2, 1],原尾格[0, 1];通过,新身体从头到尾为[[2, 1], [2, 2], [2, 3], [1, 3], [0, 3], [0, 2], [0, 1]]。
动作11方向(-1,0),增长False,目标[1, 1],原尾格[0, 1];通过,新身体从头到尾为[[1, 1], [2, 1], [2, 2], [2, 3], [1, 3], [0, 3], [0, 2]]。
动作12方向(0,-1),增长True,目标[1, 0],原尾格[0, 2];通过,新身体从头到尾为[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [1, 3], [0, 3], [0, 2]]。
动作13方向(1,0),增长False,目标[2, 0],原尾格[0, 2];通过,新身体从头到尾为[[2, 0], [1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [1, 3], [0, 3]]。
动作14方向(1,0),增长False,目标[3, 0],原尾格[0, 3];通过,新身体从头到尾为[[3, 0], [2, 0], [1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [1, 3]]。
十四次动作接受12次,最终长度8。
交叉核对与应用
用新的身体列表直接检查格子唯一性与长度变化,并与旧身体去尾后的占用集合比较。反向撞向颈部通常仍会被拒绝;只有实际腾空的尾格享有例外。
这里选择拒绝错误动作后继续练习,是为了观察后续输入;某些作品碰撞后会立即结束。增长条件也由每次输入明确给出,不推测地图上的食物或其他隐藏状态。
建议保留原始输入、每一步状态和最终输出,再只改变一个条件做对照。重点检查空输入、相等边界、重复请求以及先后顺序;把规则约定、计算过程和显示表现分别核对,比只比较最后一个数字更容易找到原因。
