【发布时间】:2012-02-06 08:48:55
【问题描述】:
基本上,我正在创建一个可以交换碎片的谜题。而且我想确保在交换 2 个元素时,选择是有效的。
由于拼图只有 9 块(3x3),我目前正在使用代码:
function valid_selection(p1, p2) {
if (p1 == 1 && (p2 == 2 || p2 == 4)) return true;
if (p1 == 2 && (p2 == 1 || p2 == 3 || p2 == 5)) return true;
if (p1 == 3 && (p2 == 2 || p2 == 6)) return true;
if (p1 == 4 && (p2 == 1 || p2 == 5 || p2 == 7)) return true;
if (p1 == 5 && (p2 == 2 || p2 == 4 || p2 == 6 || p2 == 8)) return true;
if (p1 == 6 && (p2 == 3 || p2 == 5 || p2 == 9)) return true;
if (p1 == 7 && (p2 == 4 || p2 == 8)) return true;
if (p1 == 8 && (p2 == 5 || p2 == 7 || p2 == 9)) return true;
if (p1 == 9 && (p2 == 6 || p2 == 8)) return true;
return false;
}
但是,我可以以编程方式执行此操作吗?有人知道这样的算法吗?
感谢任何帮助。
【问题讨论】:
-
请描述检查顺序,因为我们不知道游戏规则。
-
您可以通过研究我当前的代码轻松地看到这一点。这有点难以解释,
-
是的,很抱歉模棱两可,从技术上讲是这样。但是将来我可能想从 3x3 矩阵变为 4x4,然后我必须硬编码 16 种可能性,我相信你同意当我将它增加到一个 100*100 的矩阵,以此类推。
标签: algorithm validation matrix selection