Uwielbiam przesuwane łamigłówki, ale ostatnio nie miałem na nie czasu. Dlatego potrzebuję programu, który dałby mi rozwiązanie łamigłówek z przesuwanymi kafelkami, w szczególności układanki Klotskiego.
Twoje dane będą miały następujący format:
#######
#001gg#
##.222#
.######
gdzie #
reprezentuje ściany, .
reprezentuje otwarty obszar, g
reprezentuje cel, a sąsiednie liczby reprezentują różne bloki. Możesz założyć, że:
- Nie będzie więcej niż 10 bloków
- Nie będzie dwóch bloków o tym samym numerze
- Wszystkie bloki zostaną otoczone ścianami
- Siatka jest prostokątna
0
Blok jest na tyle duża, aby pokryć wszystkie kwadraty bramkowych.- Istnieje prawidłowe rozwiązanie
Musisz zwrócić sekwencję ruchów, która spowoduje umieszczenie 0
bloku tak, aby obejmował wszystkie pola bramkowe. Bloki nie mogą przechodzić przez ściany ani inne bloki. Dla powyższej układanki byłaby odpowiednia sekwencja
2L,1R,1R,1D,0R,0R,0R
podczas gdy reprezentuje przesunięcie 2
bloku 1 kwadrat w lewo, 1
blok 2 kwadraty w prawo (u góry bramki), a następnie 1 kwadrat w dół, a następnie 0
blok 3 kwadraty w prawo.
W rzeczywistości istnieje kilka sekwencji, które będą działać na powyższy problem, a wyprodukowanie dowolnej z nich jest dopuszczalne. Twoje rozwiązanie powinno być optymalne, co oznacza, że powinno stworzyć sekwencję, która rozwiązuje zagadkę w jak najmniejszej liczbie kroków.
Sekwencja powinna być wydrukowana jak powyżej, ale może być oddzielona przecinkiem, nową linią lub spacją. Nie obchodzi mnie, czy są przecinki lub białe spacje. Powinieneś wytworzyć wynik w rozsądnym czasie (maksymalnie 120 sekund na poniższych łamigłówkach).
Puzzle 1:
..####..
..#00#..
###00###
#......#
#.1122.#
##3124##
.#3344#.
.##55##.
..#gg#..
..####..
Puzzle 2:
######
#1002#
#1002#
#3445#
#3675#
#8gg9#
######
Puzzle 3:
.####.
##1g##
#22g3#
#4255#
#4.56#
#.006#
#7008#
######
Puzzle 4:
.####.
##00##
#.00g#
#.0.1#
#..g2#
######
To jest golf golfowy, więc wygrywa najkrótsze rozwiązanie (w bajtach)!