You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

15数字拼图游戏:二维数组元素升序校验功能实现问题求助

解决15数字拼图的排序校验问题

Hey,我懂你这种卡在最后一步的 frustration!15拼图的校验逻辑其实挺直接的,大概率是你在索引对应或者空白格处理上踩了坑,我给你捋清楚关键步骤和常见问题:

核心校验逻辑

不管你用一维数组还是二维数组存储拼图,校验的本质都是:每个非空白位置的数字必须等于它在正确排序中的预期值。

1. 一维数组存储(最常见)

如果你的拼图是用一维数组(比如[1,2,3,4,...,15,0],其中0代表空白格),校验逻辑很简单:

  • 遍历前15个元素(索引0到14),检查第i个元素是否等于i+1
  • 最后确认空白格(索引15)处于正确位置(可选,但能避免空白格在其他位置却误判为完成的情况)

示例代码(JavaScript):

function checkPuzzleSolved(tiles) {
  // 检查前15个数字是否按顺序排列
  for (let i = 0; i < 15; i++) {
    if (tiles[i] !== i + 1) {
      return false;
    }
  }
  // 确认空白格在最后一个位置
  return tiles[15] === 0;
}

2. 二维数组存储

如果是用4x4的二维数组(比如[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,0]]):

  • 遍历每一行每一列,跳过最后一个位置(3,3)的空白格
  • 计算当前位置的预期值:行号*4 + 列号 + 1,对比当前数字是否一致

示例代码(Python):

def is_puzzle_solved(grid):
    for row in range(4):
        for col in range(4):
            # 跳过右下角的空白格
            if row == 3 and col == 3:
                continue
            expected_num = row * 4 + col + 1
            if grid[row][col] != expected_num:
                return False
    # 确认空白格在正确位置
    return grid[3][3] == 0

常见错误排查点

你之前校验失败,大概率是这些地方出了问题:

  • 空白格处理错误:没有跳过空白格,把空白格的数值(比如0、空字符串)当成了需要校验的数字
  • 索引对应错误:比如把一维数组的索引i对应的预期值写成了i而不是i+1,或者二维数组的行和列搞反了
  • 边界条件遗漏:遍历的时候多包含了空白格的位置,或者少遍历了某个数字位置

调试小技巧

  • 打印当前拼图的完整状态,和正确的排序[1,2,...,15,0]逐位对比,看哪一个位置不符合
  • 单独测试校验函数:先传入正确的拼图,看是否返回true;再传入故意打乱的拼图,看是否返回false,确认函数逻辑没问题

内容的提问来源于stack exchange,提问作者Chaitanya Shejwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:31:06