谜题
三阶幻方。试将1~9这9个不同整数填入一个3×3的表格,使得每行、每列以及每条对角线上的数字之和相同。
策略
穷举搜索。列出所有的整数填充方案,然后进行过滤。
JavaScript解
function getPermutation(arr) { if (arr.length == 1) { return [arr]; }
var permutation = [];
for (var i=0; i function validateCandidate(candidate) {
var sum = candidate[0] + candidate[1] + candidate[2];
for (var i=0; i<3; i++) {
if (!(sumOfLine(candidate,i)==sum && sumOfColumn(candidate,i)==sum)) {
return false;
}
}
if (sumOfDiagonal(candidate,true)==sum && sumOfDiagonal(candidate,false)==sum) {
return true;
}
return false;
}
function sumOfLine(candidate,line) {
return candidate[line*3] + candidate[line*3+1] + candidate[line*3+2];
}
function sumOfColumn(candidate,col) {
return candidate[col] + candidate[col+3] + candidate[col+6];
}
function sumOfDiagonal(candidate,isForwardSlash) {
return isForwardSlash ? candidate[2]+candidate[4]+candidate[6] : candidate[0]+candidate[4]+candidate[8];
} var permutation = getPermutation([1,2,3,4,5,6,7,8,9]);
var candidate;
for (var i=0; i结果