Банк був розбитий, і всі місцеві мафіозні злодії мають незвичайне алібі: вони вдома грали в Connect 4! Для того, щоб допомогти в розслідуванні, вас просять написати програму для перевірки всіх дощок Connect 4, які були вилучені, щоб перевірити, чи справді позиції є дійсними грою Connect 4, і їх не було спішно складено як тільки поліція постукала у двері.
Правила підключення 4: гравці R
і Y
по черзі відкидати плитки їх кольору в стовпчики сітки 7х6. Коли гравець опускає плитку в колонку, він падає вниз, щоб зайняти найнижчу незаповнену позицію в цій колонці. Якщо гравцеві вдається отримати горизонтальний, вертикальний або діагональний пробіг з чотирьох плиток їх кольору на дошці, вони виграють і гра закінчується негайно.
Наприклад (із R
запуском), наступне неможливе положення Connect 4.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | |
| | |Y| | | | |
|R| |Y| | | | |
Ваша програма чи функція повинні взяти плату Connect 4 і повернути її
- Неправдиве значення, що вказує на неможливість позиції або
- Рядок чисел від 1 до 7, що вказує на одну можливу послідовність ходів , що ведуть до цієї позиції (стовпці пронумеровані ,
1
щоб7
зліва направо, і так послідовності112
, наприклад, вказує на червоний рух в колонці1
, а потім жовтий хід у стовпці з1
подальшим червоним переміщенням у стовпці2
). Якщо ви хочете, ви можете обрати нумерацію стовпців, крім 1234567, якщо ви хочете вказати у своєму рішенні. Якщо ви хочете повернути список у якомусь іншому форматі; наприклад, як масив,[2, 4, 3, 1, 1, 3]
то це теж добре, доки легко зрозуміти, які рухаються.
Ви можете прочитати дошку в будь-якому розумному форматі, в тому числі, використовуючи букви, відмінні від R
та Y
для гравців, але ви повинні вказати, хто з гравців буде першим. Можна припустити, що на дошці завжди буде 6x7 з двома гравцями.
Ви можете припустити, що отримані вами позиції принаймні фізично можливо створити на стандартній платі Connect 4; тобто, що не буде "плаваючих" шматків. Можна припустити, що дошка буде порожньою.
Це кодовий гольф, тому найкоротша відповідь виграє. Застосовуються стандартні лазівки.
Приклади
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 1234567 (one possible answer)
| | | | | | | |
|R|Y|R|Y|R|Y|R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | |R| | | | | --> false
| | |Y| | | | |
|R| |Y| | | | |
| | | | | | | |
| | |Y| | | | |
| | |R| | | | |
| | |Y| | | | | --> 323333 (only possible answer)
| | |R| | | | |
| |Y|R| | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> false (this is the position arising after
| |Y|Y|Y|Y| | | the moves 11223344, but using those moves
| |R|R|R|R| | | the game would have ended once R made a 4)
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> 2134231211 (among other possibilities)
|R|R|Y| | | | |
|Y|R|R|Y| | | |
| | | | | | | |
| | | | | | | |
|Y| | | | | | |
|R|Y| | | | | | --> false (for example, 21342312117 does not
|R|R|Y| | | | | work, because Y has already made a diagonal 4)
|Y|R|R|Y| | |R|
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | | --> 112244553 or similar
|Y|Y| |Y|Y| | |
|R|R|R|R|R| | |