Вы самый грубый, самый крутой, самый крутой ковбой к западу от Миссисипи. Тем не менее, какой-то странный парень на дурацком сайте ботаников решил, что было бы здорово столкнуть вас в случайные незаконченные пейзажи и сражаться. Неважно, ты все равно выиграешь. Однако, чтобы помочь вам выиграть эти изнурительные перестрелки, о которых вы напишите домой, полезно знать, сколько пуль имеет трус, скрывающийся в пейзаже.
Как насчет того, чтобы помочь этому бедному парню? Учитывая ландшафт ASCII, найдите пистолет внутри него и скажите ему, сколько пуль загружено в него. Это пистолет:
(X)
(X\ /X)
(XVX)
\X/
Каждый X
на картинке выше - это потенциальный слот для пули. Слот будет либо содержать пробел, либо один из них 0,O,o
(может быть непоследовательным - ковбой мог загрузить пули разных типов в свое ружье).
В пейзаже всегда будет ровно один пистолет, соответствующий приведенному выше описанию. Тем не менее, обратите внимание, что пространство вокруг и внутри пистолета может содержать что угодно.
вход
Вам будет предоставлена строка, содержащая печатный ASCII (не вкладки) и символы новой строки для разделения строк. Вы также можете взять список строк, если хотите. Все строки будут дополнены пробелами, поэтому они будут одинаковой длины. Вход будет иметь высоту не менее 4 строк и ширину 7 столбцов.
В пейзаже всегда будет ровно один пистолет.
Выход
Вы выведете, сколько пуль ( 0, O, o
) в пистолете, так что ваш вывод всегда будет между 0
и 6
.
Тестовые случаи
(0) ( )
(o\ /o( \ / )
(oVo) ( V )
\o/ \ /
0
----------------------------
////////////////////////////
////////////////////////////
/////////////(o)////////////
///////////(0\// )//////////
////////////( Vo)///////////
/////////////\ /////////////
////////////////////////////
----------------------------
3
()()()()()()()()()()()()()()()()\)/)()()()()()()()()()()()()
()()()()()()()()()()()()()()()()(V)()()()()()()()()()()()()(
()()()()()()()(\0/)()()()()()()()()()()()()()()()()()()()()(
()()()()()()()()()()()()()()()()()()()()()()()( )()()()()()(
()()()()()()(o)()()()()()()()(00)()()()()()(( \(/0)()()()()(
()()()()()()()()()()()()()()()()()()()()()()(( V )()()()()()
()()()()()()()()()()()()()()()()()()()()()()()\O/()()()()()(
2
------(0)---
||||(0\|/0)
-----(0V0)--
||||||\0/
-------_------
|||||||-|
------|-|
|||||||-|
------|-|
6
00ooOO(0)/\\/V
( )
( \\/ )
( V )
\\ /
00OOoo()()()())))
0
(\) (0)
(0\\/0) ( \0/ )
(0V0) ( V )
\\0/ \ /
1 (left gun is invalid because of the `\` in the bullet slot)
-00(0)00\0
-(O\0/o)\
- (OVo)o\0
-o \ /oo/
5
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
0
внутренняя ограничительная рамка пистолета, но снаружи пистолета.Ответы:
Улитки , 71 байт
Попробуйте онлайн.
источник
Programming language for 2-dimensional pattern matching.
Вы должны быть рады, что я сделал этот вызов тогда: PMathematica, 170 байт
Принимает массив строк / символов. Возвращает количество пуль.
источник
JavaScript,
215211209 байтСпасибо Shaggy за -4 байта!
По сути, пытается сопоставить
n
символы оружия после разрыва строки,n
начиная0
с длины строки.источник
Z
пределах литерала, при первом его использовании и избавившись от{}
.Python 2,
219224227 байтРЕДАКТИРОВАТЬ: Исправлена ошибка, которая стоила мне 5 байт: (... нашла 3 дополнительных байта
r''
, которые не были нужны. А затем Grrr !! Не\
правильно считал символы в моем коде, поэтому добавил 6 ...Принимает строку с символами новой строки; возвращает количество найденных пуль.
В основном, применяется регулярное выражение, которое ищет образец оружия с 0, 1, ... lineLength символами пэда в начале линий.
источник
C (gcc) ,
357351 байтПопробуйте онлайн! (гольф) (расширенный)
(357 гольф) (357 расширенный)Я задавался вопросом, насколько плохим будет решение на языке без встроенного сопоставления с образцом. Получилось намного меньше, чем я боялся.
По сути, этот подход разбивает пистолет на несколько отдельных частей, которые он ожидает увидеть в определенных местах относительно определенного индекса. Если все детали найдены там, где их ожидают, это пистолет! Тест пули увеличивает глобальный счетчик, чтобы отследить, сколько в нем было пуль, которое мы печатаем, когда нашли единственное оружие в ландшафте.
Примечание 1: я дополнил тестовые наборы пробелами, чтобы обеспечить одинаковую ширину строк.
Примечание 2: добавьте 10 байтов, если вам не нравится присваивание вместо трюка возврата . Для ясности я использовал фактические операторы возврата в расширенном коде.
источник