Ich bin auf der Suche nach einem Algorithmus zu bestimmen, wie viele verschiedene Möglichkeiten gibt es ein 6x10 Gitter mit 12 spezifischen Tetris wie Stücke zu füllen.Füllen eines Gitters mit unregelmäßigen Formen
Alle Teile bestehen aus jeweils fünf Blöcken und können frei gespiegelt und gedreht werden. Sie müssen alle in das Raster passen (ohne Überlappung) und es sollten keine Leerzeichen übrig bleiben.
Zusätzlich wird eine Anordnung nur dann als unterscheidbar angesehen, wenn es sich nicht um ein gespiegeltes oder gedrehtes Bild einer zuvor bestehenden Anordnung handelt.
habe ich gewählt jeden Rotationsschritt geben eigene Matrix ist, und die Darstellung der T-Blöcke würde wie folgt aussehen:
[
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 1, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, 0, 0
],
[
0, 0, 1, 0, 0,
0, 0, 1, 1, 1,
0, 0, 1, 0, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0
],
[
0, 0, 1, 0, 0,
0, 0, 1, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0
],
[
0, 0, 0, 1, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
0, 0, 0, 0, 0,
0, 0, 0, 0, 0
]
Mein erster Ansatz Brute-Force war; versuche jeden einzelnen Startpunkt mit einer Form und versuche dann alle anderen Teile nacheinander zu montieren, angefangen von der oberen linken Ecke.
Allerdings bin ich neugierig, ob jemand eine bessere Herangehensweise an dieses Problem hat?
Haben Sie Forschungen über Pentominos durchgeführt? Weil das ist, wo ich beginne - ich tippe das Wort auf die Suchmaschine und starten. Ihre Formen sind nicht unregelmäßig, sie sind in höchstem Maße regelmäßig. Wenn Sie ein kleines Papier Donald E. Knuth finden. "Tanzende Links" (Postscript, 1,6 Megabyte). Enthält eine Zusammenfassung der Artikel von Scott und Fletcher. (https://en.wikipedia.org/wiki/Pentomino) er sagt, dass er einige Programme entwickelt hat - vielleicht können Sie diese zu Java konvertieren. Dann können Sie es hier vorstellen und wir können anfangen zu reden, weil dies hauptsächlich ein Programmierforum ist. – gpasch