|
|
Alle Kombinationen einer 4x4-Matrix mit den Werten 1-16 |
|
VWStiP |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.12.2017, 10:56
Titel: Alle Kombinationen einer 4x4-Matrix mit den Werten 1-16
|
|
|
|
|
Hallo zusammen,
ich sitze gerade an einem Tool zum Lösen eines antimagischen Quadrates. Dabei handelt es sich um eine 4x4 Matrix, bei der jeweils in Spalten und Zeilen und den beiden Diagonalen bestimmte Summen entstehen müssen. Die Matrix darf jede Ziffer 1-16 nur einmal enthalten. Der Code soll alle möglichen Lösungen für dieses Quadrat finden.
Mein (nicht sehr guter) Ansatz war, mittels verschachtelter For-Schleifen beginnend vom letzten Element hochzuzählen und damit jede mögliche Kombination zu bilden, die verschiedenen Bedingungen zu prüfen und bei korrekter Lösung das Ergebnis wegspeichern.
Probleme in meinem Code:
- auch von vornherein unmögliche Lösungen (mehrmals die gleiche Ziffer) werden erst generiert und dann überprüft
- das ganze ist unheimlich langwierig
Fällt jemandem eine Möglichkeit ein, nur solche Matrizen zu erzeugen, die jeweils genau 1-mal die Ziffern 1-16 enthalten und das so systematisch, dass man alle Möglichen Kombinationen überprüfen kann?
Vielen Dank.
Grüße
VWStiP
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.432
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.12.2017, 11:18
Titel:
|
|
Hallo,
theoretisch könntest du
perms
verwenden.
Praktisch hast du das Problem, dass du dann 16! = 20.922.789.888.000 viele Kombinationen erzeugen würdest. Das ist also immer noch mehr, als in vernünftiger Zeit abgearbeitet werden kann, und passt auch nicht auf einmal in den Speicher.
Die beste Möglichkeit dürfte tatsächlich eine for-Schleife in Verbindung mit einem rekursiven Aufruf sein. Allerdings muss dabei ständig abgeprüft werden, welche Elemente noch zulässig sind, um extrem lange Rechenzeiten zu vermeiden.
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|