Heim  >  Artikel  >  Web-Frontend  >  JavaScript implementiert Puzzle-Lösungen für magische Quadratalgorithmen dritter Ordnung. Javascript-Fähigkeiten

JavaScript implementiert Puzzle-Lösungen für magische Quadratalgorithmen dritter Ordnung. Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:23:441957Durchsuche

Rätsel

Magisches Quadrat dritter Ordnung. Versuchen Sie, 9 verschiedene ganze Zahlen von 1 bis 9 in eine 3×3-Tabelle einzutragen, sodass die Summe der Zahlen in jeder Zeile, Spalte und Diagonale gleich ist.

Strategie

Umfassende Suche. Listen Sie alle Integer-Padding-Szenarien auf und filtern Sie dann.

JavaScript-Lösung

Code kopieren Der Code lautet wie folgt:

/**
 * Erstellt von cshao am 28.12.14.
 */

Funktion getPermutation(arr) {
if (arr.length == 1) {
Geben Sie [arr];
zurück }

var permutation = [];
for (var i=0; i var firstEle = arr[i];
var arrClone = arr.slice(0);
arrClone.splice(i, 1);
var childPermutation = getPermutation(arrClone);
for (var j=0; j childPermutation[j].unshift(firstEle);
}
Permutation = permutation.concat(childPermutation);
}
Permutation zurückgeben;
}

Funktion „validateCandidate(candidate)“ {
var sum = Kandidat[0] Kandidat[1] Kandidat[2];
für (var i=0; i<3; i ) {
If (!(sumOfLine(candidate,i)==sum && sumOfColumn(candidate,i)==sum)) {
Gibt false zurück;
}
}
if (sumOfDiagonal(candidate,true)==sum && sumOfDiagonal(candidate,false)==sum) {
Gibt true zurück;
}
return false;
}
Funktion sumOfLine(candidate, line) {
Rückkehr Kandidat[Zeile*3] Kandidat[Zeile*3 1] Kandidat[Zeile*3 2];
}
Funktion sumOfColumn(candidate, col) {
Rückkehr Kandidat[Spalte] Kandidat[Spalte 3] Kandidat[Spalte 6];
}
Funktion sumOfDiagonal(candidate, isForwardSlash) {
return isForwardSlash ? Kandidat[2] Kandidat[4] Kandidat[6] : Kandidat[0] Kandidat[4] Kandidat[8];
}

var permutation = getPermutation([1,2,3,4,5,6,7,8,9]);
var Kandidat;
for (var i=0; i Kandidat = Permutation[i];
if (validateCandidate(candidate)) {
Pause;
} sonst {
Kandidat = null;
}
}
if (Kandidat) {
console.log(Kandidat);
} sonst {
console.log('Kein gültiges Ergebnis gefunden');
}

Ergebnisse


Code kopieren Der Code lautet wie folgt:

[ 2, 7, 6, 9, 5, 1, 4, 3, 8 ]

wird als magisches Quadrat dargestellt:


Code kopieren Der Code lautet wie folgt:

2 7 6
9 5 1
4 3 8

Analyse

Mit dieser Strategie können Sie theoretisch die Lösung für jedes magische Quadrat n-ter Ordnung erhalten, tatsächlich können Sie jedoch nur die spezifische Lösung des magischen Quadrats 3. Ordnung erhalten, da bei n>3 der erschöpfende Vorgang des Erhaltens erforderlich ist Bei allen Abfülllösungen ist der Zeitaufwand enorm.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn