У братьев из Ордена Святого Гольфа Краткого есть традиция повторения короткой молитвы всякий раз, когда они видят, что кто-то делает знак креста . Из-за высокого уровня греха, измеренного среди туристов в последнее время, они установили видеонаблюдение в монастыре, и они наняли вас, чтобы помочь им сохранить старые традиции в эпоху ИИ.
Ваша задача - проанализировать результаты, полученные с помощью программного обеспечения для отслеживания пальцев, и определить, сколько молитв должно быть. Ввод представляет собой матрицу, содержащую целые числа от 0 до 4. 1,2,3,4 представляют положения пальцев в последовательные моменты времени. 0 представляет не-пальцы.
ТМ One True Way для скрещивания себя:
.1.
3.4
.2.
(«.» соответствует любой цифре). Однако из-за неопределенности относительно поворота камеры и присутствия благочестивых восточно-православных братьев в толпе (чья One True Way TM находится в противоположном боковом направлении), вы должны также учитывать все повороты и отражения:
.4. .2. .3. .1. .3. .2. .4.
1.2 4.3 2.1 4.3 1.2 3.4 2.1
.3. .1. .4. .2. .4. .1. .3.
Одна цифра может быть частью нескольких крестиков. Помогите монахам определить, сколько раз должен их ИИ .pray()
, посчитав, сколько из вышеуказанных подматриц 3x3 присутствует. Написать программу или функцию. Примите участие в любой разумной удобной форме.
Случаи завета:
// in
[[0,4,2,0],
[1,3,2,4],
[2,3,1,0]]
// out
2
// in
[[4,3,3,2,4,4,1,3,2,2],
[0,3,0,2,1,1,2,3,2,3],
[0,3,1,3,2,4,3,3,1,1],
[4,3,2,3,2,4,1,4,2,3],
[0,4,2,3,4,0,2,3,2,4],
[2,1,0,0,2,0,0,1,2,4],
[4,0,3,1,3,2,0,3,2,3],
[1,4,3,3,1,4,0,1,4,4],
[0,2,4,3,4,3,1,3,0,4],
[3,0,1,0,4,0,3,3,3,3]]
// out
3
// in
[[3,2,3,1,0,3,4,2,1,1,1,1,4,0,1,3,1,1,2,1,1,3,0,1,0,1,1,0,0,1,0,3,4,0,1,1,2,3,1,2,4,1,0,2,3,0,2,4,3,2],
[2,4,1,1,0,3,0,2,4,2,3,2,1,3,0,2,3,2,4,4,4,3,2,1,1,3,2,1,2,3,2,4,0,3,1,4,4,1,1,0,1,1,0,2,2,3,1,2,0,2],
[3,4,0,0,4,4,0,3,4,4,1,3,2,1,3,2,3,2,2,0,4,0,1,2,3,0,4,3,2,2,2,0,3,3,4,4,2,2,1,4,4,1,3,1,1,2,0,1,1,0],
[1,4,2,2,2,1,3,4,1,1,2,1,4,0,3,2,2,4,1,3,3,0,4,1,1,0,0,1,2,2,1,3,4,0,4,1,0,1,1,0,2,1,3,1,4,4,0,4,3,2],
[4,4,2,0,4,4,1,1,2,2,3,3,2,3,0,3,2,1,0,3,3,4,2,2,2,1,1,4,3,2,1,1,4,3,4,2,4,0,1,0,2,4,2,2,0,3,3,0,3,2],
[4,3,3,1,3,1,1,3,3,1,0,1,4,3,4,3,4,1,2,2,1,1,2,1,4,2,1,1,1,1,1,3,3,3,1,1,4,4,0,0,3,3,1,4,4,3,2,3,3,0],
[1,4,1,4,0,0,1,3,1,2,2,1,1,2,3,3,2,0,3,4,3,2,1,2,2,3,3,1,4,2,1,1,4,1,3,2,0,0,0,1,2,4,1,1,3,0,4,2,3,1],
[2,2,3,0,0,4,2,1,2,3,1,2,4,1,0,1,0,2,4,1,3,4,4,0,0,4,0,4,4,2,0,0,2,2,3,3,4,1,0,3,2,1,0,1,1,0,3,0,3,2],
[1,2,4,3,4,3,1,2,2,3,0,1,2,4,4,4,3,1,2,3,4,3,3,2,0,0,2,0,3,4,4,2,3,2,0,2,4,3,0,0,0,4,4,0,4,4,0,3,3,3],
[4,4,1,2,0,2,2,0,0,3,2,3,2,3,4,1,0,2,3,0,3,2,1,1,4,3,0,2,3,1,0,4,1,2,4,1,1,4,4,4,2,2,2,3,0,1,0,3,0,1],
[4,0,3,0,2,2,0,3,2,2,2,4,0,4,0,1,0,1,4,3,3,2,3,1,2,2,4,4,0,3,2,3,1,4,1,0,3,2,3,2,2,0,1,2,4,0,3,0,4,4],
[0,4,0,1,0,2,3,2,1,3,1,1,2,0,3,2,1,4,0,1,4,4,1,3,4,4,1,0,4,1,0,3,4,0,3,2,4,3,3,3,3,1,2,2,3,3,3,1,3,4],
[3,4,1,2,1,1,1,0,4,0,1,1,0,4,1,3,1,1,2,0,2,1,4,1,4,4,3,2,0,3,0,3,0,1,1,2,1,3,0,4,4,2,2,2,1,3,4,1,1,1],
[3,0,1,4,2,0,0,3,1,1,1,4,4,0,2,2,0,4,0,3,1,0,2,2,4,4,4,0,4,4,4,4,4,4,3,0,4,4,4,1,2,4,4,3,0,0,4,0,4,2],
[2,0,1,2,1,1,3,0,3,1,0,4,3,1,2,1,1,3,0,1,2,4,2,1,2,3,4,2,4,4,2,2,3,4,0,0,1,0,0,4,1,3,3,4,1,2,1,3,3,2],
[4,0,2,0,3,1,2,1,1,1,1,2,3,0,3,1,0,4,3,0,0,0,2,0,1,4,0,2,1,3,4,2,2,4,2,3,1,2,0,2,0,2,4,0,1,2,3,4,1,3],
[3,0,2,4,2,0,3,4,3,2,3,4,2,0,4,1,0,4,3,3,1,0,2,2,2,1,3,3,1,1,0,3,3,0,3,2,1,1,0,1,2,2,0,4,4,2,0,1,3,1],
[0,4,4,4,0,3,0,3,0,2,2,0,1,2,3,3,4,3,0,4,1,2,3,3,0,2,2,3,0,0,0,2,4,2,3,4,2,3,4,0,2,0,1,1,3,4,2,2,4,4],
[2,1,2,3,4,3,1,2,0,0,0,0,0,0,3,4,3,3,1,2,2,1,3,4,1,2,4,0,1,4,1,0,0,0,2,1,1,1,3,0,0,3,1,1,4,2,1,3,4,1],
[1,0,3,0,2,1,4,2,3,3,1,1,3,4,4,0,1,2,1,3,0,3,1,1,3,0,2,4,4,4,2,3,1,4,3,4,0,1,4,1,1,1,4,0,0,2,3,4,0,4]]
// out
8
«Да будет благословен самый короткий из кратчайших, ибо он победит царство возвышенных голосов». Книга Святого Гольфа 13:37
«Не используйте лазейки, потому что это злые дела Люцифера». Письмо к Мете 13: 666
Небольшая визуализация людей, делающих крест
Спасибо @Tschallacka за визуализацию.
Ответы:
Грязь , 20 байтов
Попробуйте онлайн!
Очень буквальная реализация спецификации:
n`
Заставьте Grime подсчитать количество под прямоугольников входных данных, которые дают совпадение..\1./\3.\4/.\2.
определяет квадрат 3х3:Где
.
может быть любой персонаж.oO
является модификатором ориентации, который позволяет этому прямоугольнику появляться при любом повороте или отражении.v
Используется для сниженияo
ей приоритет , так что нам не нужны круглые скобки вокруг площади.источник
Улитки ,
1716 байтовПопробуйте онлайн!
объяснение
A
заставляет улиток считать количество возможных совпадающих путей во всем входном сигнале.o
устанавливает начальное направление на любое ортогональное направление (а не только на восток). Сам шаблон находится на второй строке:источник
Haskell,
10810293 байтаПопробуйте онлайн!
Нет регулярных выражений Образец соответствия
в верхнем левом углу матрицы возьмите
1
if(l*r-1)*(t*b-1)==11
и рекурсивно идите вправо (опускание.l.
) и вниз (опускание первой строки). Если шаблон не может быть сопоставлен (справа или снизу), сделайте a0
. Суммируйте все результаты.Изменить: -9 байт благодаря @xnor.
источник
2^(l*r)+2^(t*b)==4100
чтобы проверить номера, но это , кажется , как наши решения обманным путем2,6
на месте3,4
.0..4
(l*r-1)*(t*b-1)==11
.Perl, 70 байт
Включает +2 для
0p
Задать матрицу ввода в виде блока цифр без пробелов в STDIN:
Вращает крест, вращая цифры
источник
Retina ,
9283 байтаПопробуйте онлайн! Объяснение:
Ищите все перекрывающиеся квадраты 3х3. Взгляд сзади фиксирует отступ дважды, чтобы его можно было сбалансировать на второй и третьей строках. Предполагается, что входные данные прямоугольные, поэтому нам не нужно проверять баланс групп. Нижняя / верхняя средняя ячейка и левая / правая средние ячейки затем захватываются.
Сортируйте каждую пару ячеек в порядке.
Подсчитайте оставшиеся действительные шаблоны.
источник
Желе , 26 байт
Попробуйте онлайн!
объяснение
-3 байта благодаря Джонатану Аллану (2) и мистеру Xcoder (3) (объединены)
источник
D
. Мой плохой, исправленный....Fµ€ċ4R¤
вместо...Ḍµ€ċ1234
(также обратите внимание, что1234
можно было бы заменить его,⁽¡ḋ
чтобы сохранить один)Z3Ƥ
вместоṡ3Z€
и⁼J$µ€S
вместоḌµ€ċ1234
.Java 8,
135133131 байт-2 байт благодаря @tehtmi в течение более короткого формулы:
(l*r-1)*(t*b-1)==11
для~(l*r)*~(t*b)==39
Объяснение:
Попробуйте онлайн.
источник
~(l*r)*~(t*b)==39
(у Haskell, по-~
видимому, нет 1 байта .)Шелуха , 23 байта
Попробуйте онлайн!
объяснение
источник
Dyalog APL ,
3029282726 байтов ( SBSC )Попробуйте онлайн!
источник
⌽∘⊖×⊢
может быть короче на 2 байта, вы можете догадаться, как?×∘⌽∘⊖⍨
(⌽×⊖)
⊢/
другого -1. Я не думал об этом. В этой ситуации вы не должны доверять мне.Желе , 36 байт
Попробуйте онлайн!
37 байт
По какой-то причине я не могу перейти
Ḋm2$$
на верхнюю ссылку.Попробуйте онлайн!
источник
Чисто ,
255... 162 байтаЭто не выгодно, что часто использовать шаблоны шаблонов в понимании, но в этом случае, это так.
Попробуйте онлайн!
Определяет функцию
$
взятия[[Int]]
и возвратаInt
.Сначала он генерирует все симметрии матрицы
m
(преобразование черезf
), беретtails
из которых три или более строк и синхронно проверяет, сколько из первых трех наборов столбцов изtails
каждой строки соответствуют образцу креста.Это эквивалентно подсчет числа упорядоченного
tails
-of-tails
соответствия шаблона[[_,1,_:_],[3,_,4:_],[_,2,_:_]:_]
- который , в свою очередь , логически такие же , как проверка , если для каждой ячейки в матрице, что клетка является верхним левым углом поворота любого креста.источник
Python 3,
120118 байтПопробуйте онлайн!
Использует тот факт, что произведение противоположных пар чисел в кресте должно быть 2 и 12 соответственно, и сравнивается с набором, чтобы покрыть все различные ориентации. Принимает ввод как двумерный массив целых чисел.
источник
f=
в счетеJapt
-x
,393833 байтаПопробуйте онлайн!
-1 байт благодаря @Shaggy.
-5 байт благодаря @ETHproductions путем рефакторинга массива.
Распаковано и как это работает
Там все еще должен быть лучший способ проверить на крест ...
источник
e[2C]
.2
вë2
?