У грі Freecell вам покладено завдання скласти чотири фундаментні палі в костюмі від туза до короля, на макеті, де ви будуєте низ в чергуванні кольорів. Однак ви можете створювати лише одну карту за один раз, тому вам надається чотири "вільних комірки", кожна з яких може містити одну карту, щоб допомогти вам перемістити цілі послідовності. Ідея полягає в тому, що ви вплітаєте окремі картки з вільних комірок і з них, як потрібно, щоб допомогти вам вирішити гру.
Ваше завдання - створити програму, яка вирішить ці ігри в найменші можливі кроки.
Ваша програма прийме як вхід послідовність із 52 карт у наступному форматі:
2S 9H 10C 6H 4H 7S 2D QD KD QC 10S AC ...
Які будуть розглядатися в початковому макеті в такому порядку:
01 02 03 04 05 06 07 08
09 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
49 50 51 52
І поверніть список рухів, щоб вирішити гру. Кожен хід буде у такому форматі:
- Число, що представляє номер стопки (
1
наскрізь8
) або вільну клітинку (A
доD
), що представляє собою вихідну купу. - Ще одне число або літера, що представляє цільову купу або вільну клітинку, або
F
для основи цього костюма.
Вихід буде виглядати приблизно так:
18 28 3A 8B 8C 85 B5 35 4F etc.
Після того, як картка поміщена у фундамент, її неможливо вийняти. Оскільки одночасно переміщується лише одна картка, для переміщення послідовності з 3 карт потрібно 5 ходів, а послідовність з 5 карт вимагає 9 ходів.
Якщо гра нерозв’язна, ваша програма повинна вказати як таку. Однак ваша програма повинна вміти вирішувати будь-яку вирішувану гру.
Вашу програму оцінюватимуть за 32 768 угод, знайденими в оригінальній програмі Microsoft FreeCell. Для того, щоб бути дійсною, ваша програма повинна успішно вирішувати кожну угоду, крім угоди №11982 , яка є нерозв’язною. Ваш рахунок буде загальною кількістю кроків, необхідних для вирішення цих 32 767 угод, причому коротший код є тай-брейком.
Файл із усіма колодами у форматі, який вимагається вищевказаною специфікацією, можна завантажити тут (файл 5,00 МБ): https://github.com/joezeng/pcg-se-files/raw/master/freecell_decks