Я дуже люблю розсувні головоломки з плитки, але останнім часом я не встигла на них. Отже, мені потрібна програма, яка дасть мені виправити пазли з розсувними плитками, зокрема головоломки Клоцького.
Ваш внесок буде у такому форматі:
#######
#001gg#
##.222#
.######
де #
представляє стіни, .
являє собою відкриту область, g
представляє мету, а сусідні числа представляють різні блоки. Можна припустити, що:
- Буде не більше 10 блоків
- Не буде двох блоків з однаковим номером
- Усі блоки будуть обгороджені стінами
- Сітка прямокутна
0
Блок досить великий , щоб охопити всі голи квадратів.- Є вірне рішення
Вам потрібно повернути послідовність рухів, які поставлять 0
блок так, щоб він охоплював усі квадрати цілі. Блоки не можуть проходити крізь стіни чи інші блоки. Для вищезазначеної головоломки відповідна послідовність буде
2L,1R,1R,1D,0R,0R,0R
в той час як являє собою переміщення 2
блоку 1 квадрат ліворуч, 1
блок 2 квадрата праворуч (зверху цілі), потім 1 квадрат вниз, а потім 0
блок 3 квадрата праворуч.
Насправді є декілька послідовностей, які працюватимуть над вказаною проблемою, і створення будь-якої з них є прийнятним. Ваше рішення повинно бути оптимальним, це означає, що воно повинно створити послідовність, яка розгадує головоломку за якомога менше кроків.
Послідовність повинна бути роздрукована як вище, але може бути розділена комою, новою лінією або пробілом. Мені байдуже, чи є задні коми чи пробіли. Ви повинні отримати результат у розумний час (максимум 120 секунд у загадках нижче).
Головоломка 1:
..####..
..#00#..
###00###
#......#
#.1122.#
##3124##
.#3344#.
.##55##.
..#gg#..
..####..
Головоломка 2:
######
#1002#
#1002#
#3445#
#3675#
#8gg9#
######
Головоломка 3:
.####.
##1g##
#22g3#
#4255#
#4.56#
#.006#
#7008#
######
Головоломка 4:
.####.
##00##
#.00g#
#.0.1#
#..g2#
######
Це код-гольф, тому найкоротше рішення (в байтах) виграє!