Ungerade magische Quadrate in Java
skynesher/E+/Getty Images
Es ist unklar, wer zuerst ein magisches Quadrat erfunden hat. Es gibt eine Geschichte über eine riesige Flut vor langer Zeit in China. Die Menschen fürchteten, weggespült zu werden und versuchten, den Flussgott durch Opfergaben zu besänftigen. Nichts schien zu funktionieren, bis ein Kind eine Schildkröte mit einem magischen Quadrat auf dem Rücken bemerkte, die das Opfer immer wieder umkreiste. Der Platz sagte den Menschen, wie groß ihr Opfer sein musste, um sich selbst zu retten. Seitdem sind magische Quadrate der Höhepunkt der Mode für jede anspruchsvolle Schildkröte.
Eben: Anfänger
Fokus: Logik, Arrays , Methoden
Ungerade magische Quadrate
Falls Sie noch nie zuvor auf eines gestoßen sind: Ein magisches Quadrat ist eine Anordnung aufeinanderfolgender Zahlen in einem Quadrat, sodass die Zeilen, Spalten und Diagonalen alle dieselbe Zahl ergeben. Ein magisches 3x3-Quadrat ist zum Beispiel:
|_+_||_+_|
|_+_|
|_+_|
Jede Zeile, Spalte und Diagonale ergibt 15.
Frage zu ungeraden magischen Quadraten
Diese Programmierübung befasst sich mit dem Erstellen von magischen Quadraten mit ungerader Größe (d. h. die Größe des Quadrats kann nur eine ungerade Zahl sein, 3x3, 5x5, 7x7, 9x9 usw.). Der Trick beim Erstellen eines solchen Quadrats besteht darin, die Zahl 1 in die erste Reihe und die mittlere Spalte zu setzen. Um herauszufinden, wo die nächste Zahl platziert werden soll, bewegen Sie sich diagonal nach rechts oben (d. h. eine Reihe nach oben, eine Spalte quer). Wenn eine solche Bewegung bedeutet, dass Sie vom Quadrat fallen, wickeln Sie sich um die Reihe oder Spalte auf der gegenüberliegenden Seite. Wenn der Zug Sie schließlich zu einem bereits gefüllten Feld führt, gehen Sie zurück zum ursprünglichen Feld und bewegen Sie sich um eins nach unten. Wiederholen Sie den Vorgang, bis alle Quadrate gefüllt sind.
Ein magisches 3x3-Quadrat würde beispielsweise so beginnen:
|_+_||_+_||_+_|
|_+_|
Eine Bewegung diagonal nach oben bedeutet, dass wir zum unteren Rand des Quadrats umbrechen:
|_+_||_+_|
|_+_|
|_+_|
Ebenso bedeutet die nächste diagonale Bewegung nach oben, dass wir zur ersten Spalte zurückkehren:
|_+_||_+_||_+_|
|_+_|
Jetzt führt die diagonale Bewegung nach oben zu einem bereits gefüllten Quadrat, also gehen wir dorthin zurück, wo wir hergekommen sind, und lassen eine Reihe nach unten fallen:
|_+_||_+_|
|_+_|
|_+_|
und es geht weiter und weiter, bis alle Quadrate voll sind.
Programmanforderungen
- ein Benutzer muss in der Lage sein, die Größe des magischen Quadrats einzugeben.
- sie dürfen nur eine ungerade Zahl eingeben.
- Verwenden Sie eine Methode, um das magische Quadrat zu erstellen.
- Verwenden Sie eine Methode, um das magische Quadrat anzuzeigen.
Die Frage ist, kann Ihr Programm ein magisches 5x5-Quadrat wie das folgende erstellen?
|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
Hinweis: Abgesehen von den Programmieraspekten dieser Übung ist es auch ein Test der Logik. Führen Sie nacheinander jeden Schritt zur Erstellung des magischen Quadrats durch und finden Sie heraus, wie es mit a gemacht werden kann zweidimensionales Array .
Odd Magic Square-Lösung
Dein Programm hätte in der Lage sein müssen, das folgende magische 5x5-Quadrat zu erstellen:
|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
Hier ist meine Version:
|_+_||_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|