У театрі BattleBlock Theatre часто міститься головоломка, яка є узагальненою версією Lights Out . У вас є три сусідні блоки, кожен з яких вказує рівень між 1 і 4 включно з брусками, наприклад:
|
||||
||
Якщо ви торкаєтесь блоку, то цей блок, як і будь-який сусідній блок, збільшуватимуть його рівень (повернення назад від 4 до 1). Головоломка вирішується, коли всі три блоки показують однаковий рівень (не має значення, на якому рівні). Оскільки порядок, до якого ви торкаєтесь блоків, не має значення, ми позначаємо рішення тим, як часто торкаються кожного блоку. Оптимальним рішенням для вищевказаного входу було б 201
:
| --> || --> ||| |||
|||| | || |||
|| || || --> |||
Гра дуже легко узагальнює будь-яку кількість блоків, хоча для деяких чисел не всі конфігурації вирішувані.
Змагання
Враховуючи послідовність рівнів блоків, поверніть, як часто потрібно торкатися кожного блоку, щоб вирішити головоломку. Наприклад, наведений вище приклад може бути поданий як 142
і, що може дати 201
результат. Якщо рішення немає, поверніть деякий узгоджений результат на ваш вибір, який відрізняється від усіх потенційних рішень, наприклад, -1
або порожній рядок.
Ви можете написати функцію або програму, взяти введення через STDIN, аргумент командного рядка або аргумент функції в будь-якому зручному форматі списку або рядка і аналогічно вивести через зворотне значення або надрукувавши в STDOUT.
Ваш код повинен повернути правильні результати для всіх тестових випадків протягом хвилини на розумній машині. (Це не зовсім суворий ліміт, тому якщо ваше рішення займає хвилину і десять секунд, це добре, але якщо це займе 3 хвилини, це не так. Хороший алгоритм легко вирішить їх за лічені секунди.)
Це кодовий гольф, тому найкоротша відповідь (у байтах) виграє.
Приклади
Рішення не є унікальними, тому ви можете отримати різні результати.
Input Output
1 0
11 00
12 No solution
142 201
434 101
222 000
4113 0230
32444 No solution
23432 10301
421232 212301
3442223221221422412334 0330130000130202221111
22231244334432131322442 No solution
111111111111111111111222 000000000000000000000030
111111111111111111111234 100100100100100100100133
412224131444114441432434 113013201011001101012133
Наскільки я знаю, є рівно 4 рішення на кожен вхід, де кількість блоків становить 0 мод 3, або 1 мод 3, а є 0 або 16 рішень, де це 2 мод 3.