Инновация - карточная игра, в которой игроки сражаются на протяжении веков, от предыстории до современности, в попытке заработать достижения быстрее, чем их противники.
Каждая карта в Innovation уникальна и предоставляет игроку ряд значков. Если мы будем рассматривать каждую карту как сетку 2x3, то три из четырех слотов слева и снизу всегда будут заняты значками (символы в черных шестиугольниках не учитываются).
В игре есть 6 типов иконок (замки, короны, листья, лампочки, фабрики и часы), которые мы будем представлять произвольно, используя символы 012345
. Используя #
для обозначения черного шестиугольника, мы можем использовать четыре символа для представления значков на каждой карточке. Например, карты выше
0.. #.. 3.. 1.. -> 03#0 #331 355# 144#
3#0 331 55# 44#
Теперь в Innovation карты в игровой зоне сгруппированы в стопки *, которые раскладываются одним из четырех способов. Для каждого примера мы будем использовать карты выше, предполагая, что крайняя левая карта 03#0
находится вверху колоды.
Без рекламы: видна только верхняя карта
0..
3#0
Splay left : верхняя карта полностью видна, а также правая треть всех карт ниже
0..|.|.|.|
3#0|1|#|#|
Splay right : верхняя карта полностью видна, а также левая треть всех карт ниже
1|3|#|0..
4|5|3|3#0
Раскрой вверх : верхняя карта полностью видна, а также нижняя половина всех карт ниже.
0..
3#0
---
331
---
55#
---
44#
Соревнование
На входе будет одна строка, разделенная пробелами, состоящая из двух частей:
- Направление распространения, которое является одним из
!<>^
, представляет отсутствие отображения, расширение влево, расширение вправо или вверх соответственно. - Непустой список карт, каждая из которых имеет длину 4 символа и состоит из символов
012345#
. Крайняя левая карта находится наверху колоды, и каждая карта содержит ровно одну#
.
Ответы могут быть функциями, полными программами или эквивалентными . Вы можете выбрать, будет ли направление отображения первым или последним, то есть выбрать один из двух форматов ниже:
> 03#0 #331 355# 144#
03#0 #331 355# 144# >
Выходными данными будет список из шести чисел, представляющих счет для каждого значка, например, для приведенных выше примеров карт:
! 03#0 #331 355# 144# -> 2 0 0 1 0 0
< 03#0 #331 355# 144# -> 2 1 0 1 0 0
> 03#0 #331 355# 144# -> 2 1 0 3 1 1
^ 03#0 #331 355# 144# -> 2 1 0 3 2 2
Например, в случае без сплайсинга были две 0
иконки и одна 3
иконка, показывающая первую строку. Обратите внимание, что мы не считаем #
s, поскольку черные шестиугольники не являются иконками.
Вы можете выбрать любой разумный и недвусмысленный способ представления списка, например разделенный разделителями или использование естественного представления списка в вашем языке.
Контрольные примеры
! 113# -> 0 2 0 1 0 0
< 113# -> 0 2 0 1 0 0
> 113# -> 0 2 0 1 0 0
^ 113# -> 0 2 0 1 0 0
! 000# 12#2 -> 3 0 0 0 0 0
< 000# 12#2 -> 3 0 1 0 0 0
> 000# 12#2 -> 3 1 1 0 0 0
^ 000# 12#2 -> 3 0 2 0 0 0
! 000# 111# 222# -> 3 0 0 0 0 0
< 000# 111# 222# -> 3 0 0 0 0 0
> 000# 111# 222# -> 3 2 2 0 0 0
^ 000# 111# 222# -> 3 2 2 0 0 0
! 335# #101 21#2 333# 2#20 3#33 4#54 #133 3#33 32#2 -> 0 0 0 2 0 1
< 335# #101 21#2 333# 2#20 3#33 4#54 #133 3#33 32#2 -> 1 1 2 5 1 1
> 335# #101 21#2 333# 2#20 3#33 4#54 #133 3#33 32#2 -> 0 3 3 7 1 1
^ 335# #101 21#2 333# 2#20 3#33 4#54 #133 3#33 32#2 -> 2 4 4 10 1 2
Обратите внимание, что что-то вроде !
недопустимого ввода, поскольку список гарантированно не является пустым.
* Для целей этой задачи мы игнорируем цвета ворса.
источник