Čtěte prosím tuto stránku celou a pozorně.
Naprogramujte program, který zjišťuje nejmenší možný počet tahů, kterými se lze dostat z počáteční do cílové konfigurace hlavolamu.
Konfigurace hlavolamu je zadaná rozmístěním písmen (barev). Příklad: Pětibarevný hlavolam má konfiguraci A B E D C
. Každá barva se v konfiguraci vyskytuje právě jednou.
Tah je permutace barev.
Vstupní data jsou uložena v souboru vstup.txt
. Na prvním řádku souboru je počáteční konfigurace hlavolamu. Na druhém řádku souboru je cílová množnina konfigurací, která má stejný formát jako počáteční konfigurace, ale místo některých barev mohou být použity otazníky. Příklad: A B ? ? E
.
Na dalších řádcích souboru jsou přípustné tahy. Každý tah je posloupnost čísel, čísla jsou oddělená mezerou a jejich počet je stejný jako počet barev. Příklad: 2 3 1 5 4
odpovídá permutaci 1=>2, 2=>3, 3=>1, 4=>5, 5=>4. Čísla před šipkami tvoří posloupnost 12345, čísla za šipkami je posloupnost načtená ze vstupního souboru.
Ve výstupním souboru by mělo být jen jediné číslo, které odpovídá minimálnímu počtu tahů, kterými se lze dostat z počáteční do cílové konfigurace (může to být i nula).
Můžete počítat s tím, že cílová konfigurace bude vždy dosažitelná. Počet tahů v souboru vstup.txt
může být nulový.
Použijte algoritmus prohledávání do šířky.
Počet barev nebude vyšší než 20. Počet vrcholů, které navštíví algoritmus prohledávání do šířky nebude větší než 1000. Počet tahů nebude větší než 100.
Příklady souborů s výstupem najdete v archivu data.tar.gz nebo data.zip.
hruska
(zavináč) popelka
(tečka) ms
(tečka) mff
(tečka) cuni
(tečka) cz
s předmětem zprávy PGM - hlavolam
a s přiloženým souborem hlavolam.pas
..exe
soubory.
Termín zadání: 20.12.2005.
Termín odevzdání: do 8.1.2006 včetně.
Termín odevzdání oprav: libovolný
hruska
(zavináč) popelka
(tečka) ms
(tečka) mff
(tečka) cuni
(tečka) cz