 |
|
 |
| | Luštění hlavolamu |  |
 |
 |  |
Tento nástroj by i Vám mohl být nápomocen při skládání skládaček. Jednu takovou jsem před časem dostal a samozřejmě jsem hned zapomněl řešení. Po měsíci nikam nevedoucí snahy jsem vytvořil tuto utilitu, která je schopna vyluštit hlavolam během pár minut.
|
|
|
| Obr. 1 - Tvary jednotlivých komponent. |
|
Obr. 2 - Jedno z možných řešení. |
Kdybychom při hledání řešení použili slepé prohledávání stavového prostoru, výsledku bychom se hned tak nedočkali. Proto jsem algoritmus slepého prohledávání mírně obohatil. Nyní se víc podobá tomu, jak hlavolam skládá člověk.
|
| Obr. 3 - První nalezené řešení, podprovázené pomíjivou chvilkou radosti. |
Do krabičky hlavolamu (třída Board) se postupně snažíme vkládat jednotlivé tvary (třída Shape) v různých pootočeních (atribut Shape.convert), avšak nikdy nesmí dojít k porušení kontinuity. Kontinuitou rozumíme fakt, že v krabičce musí být vždy přítomna pouze jediná kontinuální plocha složená z tvarů a stejně tak jediná kontinuální prázdná plocha.
Tím pádem se utilita snaží plochu postupně efektivně zaplňovat a rovnou upouští od prohledávání neperspektivních uzlů ve stavovém prostoru.
Program je koncipován jako oknová aplikace v jazyce C#, běžící pod platformou .NET Framework. Kdykoliv aplikaci ukončíte, uloží se aktuální rozložení tvarů do souboru puzzle.txt, umístěného ve stejném adresáři jako soubor puzzle.exe. Při dalším spuštění aplikace tedy algoritmus pokračuje v prohledávání stavového prostoru od místa přerušení.
Soubor puzzle.txt lze snadno modifikovat, což způsobí změnu aktuálního stavu ve stavovém prostoru. Sloupce v souboru odpovídají 1. až 12. tvaru umístěnému na ploše, řádky postupně představují:
- ID tvaru,
-
X-ovou souřadnici,
-
Y-ovou souřadnici umístění tvaru v krabičce,
- pootočení tvaru.
Poslední řádek souboru udává aktuální úroveň vnoření algoritmu ve stromu stavového prostoru.
|
|
|
|
|
|
|
|
|
| Obr. 4 - Příklady řešení. |
|  |  |
 |  |  |  |  |  |
| | |
|  | |
 |
| |  | |
| |
 |
| | |
|  | |
 |
| |  | |
Instalátor běhového prostředí NET Framework je k dispozici jako spustitelný soubor Dotnetfx.exe. Lze jej stáhnout z webových stránek společnosti Microsoft.
|
| Stáhněte si .NET Framework (23 MB) |
| |
 |
|