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
Funktion getPermutation(arr) {
if (arr.length == 1) {
Geben Sie [arr];
zurück
}
var permutation = [];
for (var i=0; i
var arrClone = arr.slice(0);
arrClone.splice(i, 1);
var childPermutation = getPermutation(arrClone);
for (var j=0; j
}
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
if (validateCandidate(candidate)) {
Pause;
} sonst {
Kandidat = null;
}
}
if (Kandidat) {
console.log(Kandidat);
} sonst {
console.log('Kein gültiges Ergebnis gefunden');
}
Ergebnisse
wird als magisches Quadrat dargestellt:
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.