Акордеон - це картка з пасьянсом, яку я нещодавно натрапив, де майже кожен макет вирішується, але неймовірно важко. Ви можете зіграти тут .
Правила
52 лицьові картки розміщені лицьовою стороною догори у довільному порядку. З кожним кроком ви замінюєте картку на пізнішу, де дві карти :
- Поділіться костюм чи номер та
- Знаходиться на відстані 1 (сусідня) або 3 (дві картки між ними).
Гра виграється, коли залишилася лише 1 карта . Можна припустити, що кожен вхід вирішується. Замінена карта завжди повинна передувати картці, що заміняється.
Приклад
Як приклад, розглянемо наступний макет:
2H,2S,1S,2D (H: Hearts, S: Spades, D: Diamonds)
Тут можливі 3 можливі ходи:
- Замініть на
2H
сусідні2S
, так що ми закінчимо2S,1S,2D
- Замініть на
2S
сусідні1S
, так що ми закінчимо2H,1S,2D
- Замінити
2H
з2D
(на відстані 3), так що ми в кінцевому підсумку з2D,2S,1S
З цих 3 ходів лише останній має можливість виграти (Ви виграєте, замінивши 2D <- 2S
потім 2S <- 1S
).
Введення-виведення
Ваше завдання - написати вирішувач акордеон . Вам передається список карт, і вам потрібно повернути список рухів, щоб вирішити гру.
Вам передається список карток у вигляді рядка з комою, де кожна картка передається як ціле число, що представляє їх числове значення, а потім символ, що представляє їх масть.
Ви повинні повернути список замін у вигляді рядка з комою, де кожна заміна виконується у форматі Card <- Card
(відповідно до описаного вище формату картки). Перша картка кожної пари - це картка, що її замінюють.
Тестові приклади:
5H,1C,12S,9C,9H,2C,12C,11H,10C,13S,3D,8H,1H,12H,4S,1D,7H,1S,13D,13C,7D,12D,6H,10H,4H,8S,3H,5D,2D,11C,10S,7S,4C,2H,3C,11S,13H,3S,6C,6S,4D,11D,8D,8C,6D,5C,7C,5S,9D,10D,2S,9S
5H,9C,11H,7S,7D,12D,6H,10S,3H,4D,12C,2S,3C,5C,7H,6S,1H,8S,2H,11S,4C,10D,12H,9H,2D,4H,6C,13H,11C,2C,10H,8C,1S,11D,3S,12S,7C,5D,13S,8D,4S,6D,13C,3D,8H,13D,1D,9D,9S,1C,5S,10C
7H,11C,8C,7S,10D,13H,4S,10C,4D,2C,4H,13D,3C,2H,12C,6C,9H,4C,12H,11H,9S,5H,8S,13S,8H,6D,2S,5D,11D,10S,1H,2D,5C,1C,1S,5S,3H,6S,7C,11S,9C,6H,8D,12S,1D,13C,9D,12D,3D,7D,10H,3S
Хоча ця конкуренція є кодовим гольфом , я особливо зацікавлений у ефективних за часом рішеннях і, ймовірно, нагороджуватимуть геніальні рішення гідністю. Однак, рішення, які займають астрономічну кількість часу, як і раніше прийнятні (я б рекомендував тестувати на меншій колоді, наприклад, 16-картці, 4-мантійні колоди).