T on braci z rzędu St Golfus zwięzłej mają tradycję recytując krótką modlitwę, gdy widzą kogoś uczynić znak krzyża . Ze względu na wysoki poziom grzechu mierzony ostatnio wśród turystów, zainstalowali CCTV w klasztorze i zatrudnili cię, aby pomóc im utrzymać dawną tradycję w erze AI.
Twoim zadaniem jest analiza wyników pochodzących z oprogramowania do śledzenia palców braci i określenie liczby modlitw. Dane wejściowe to macierz zawierająca liczby całkowite od 0 do 4. 1,2,3,4 przedstawia pozycje palców w kolejnych momentach w czasie. 0 oznacza brak palców.
One True Way TM, aby się skrzyżować, to:
.1.
3.4
.2.
(„.” pasuje do dowolnej cyfry). Jednak z powodu niepewności co do obrotu kamery i obecności pobożnych braci prawosławnych w tłumie (których One True Way TM jest w przeciwnym kierunku na boki), należy również policzyć wszystkie obroty i odbicia:
.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.
Jedna cyfra może być częścią wielu krzyżyków. Pomóż braciom w określeniu, ile razy ich AI powinna .pray()
, licząc, ile z powyższych submatric 3x3 jest obecnych. Napisz program lub funkcję. Wprowadź dane w dowolnej rozsądnej dogodnej formie.
Przypadki testamentu:
// 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
„Błogosławiony najkrótszy z najkrótszych, albowiem zwycięża królestwo zwolenników”. -Book of St Golfus 13:37
„Nie będziesz używać luk, bo są to niegodziwe uczynki Lucyfera”. - List do Meta 13: 666
Nieznaczna wizualizacja ludzi wykonujących krzyż
Dzięki @Tschallacka za wizualizację.
Odpowiedzi:
Brud , 20 bajtów
Wypróbuj online!
Bardzo dosłowne wdrożenie specyfikacji:
n`
sprawiają, że Grime zlicza liczbę podprostokątów danych wejściowych, które dają dopasowanie..\1./\3.\4/.\2.
definiuje kwadrat 3x3:Gdzie
.
może być dowolna postać.oO
jest modyfikatorem orientacji, który pozwala, aby ten prostokąt pojawiał się w dowolnym obrocie lub odbiciu.v
Służy do obniżeniao
ów pierwszeństwo tak, że nie potrzebujemy nawiasów wokół placu.źródło
Ślimaki ,
1716 bajtówWypróbuj online!
Wyjaśnienie
A
sprawia, że Ślimaki liczą liczbę możliwych pasujących ścieżek na całym wejściu.o
ustawia kierunek początkowy na dowolny kierunek ortogonalny (zamiast tylko na wschód). Sam wzór znajduje się w drugiej linii:źródło
Haskell,
10810293 bajtyWypróbuj online!
Brak wyrażenia regularnego. Dopasuj wzór
w lewym górnym rogu matrycy weź
1
if(l*r-1)*(t*b-1)==11
i rekurencyjnie przejdź w prawo (upuść.l.
) i w dół (upuść pierwszy rząd). Jeśli wzoru nie można dopasować (na prawej lub dolnej granicy), wybierz a0
. Zsumuj wszystkie wyniki.Edycja: -9 bajtów dzięki @xnor.
źródło
2^(l*r)+2^(t*b)==4100
sprawdzenie liczb, ale wydaje się, że oba nasze rozwiązania są oszukiwane2,6
w miejsce3,4
.0..4
(l*r-1)*(t*b-1)==11
.Perl, 70 bajtów
Obejmuje +2 za
0p
Podaj macierz wejściową jako blok cyfr bez spacji na STDIN:
Obraca krzyż, obracając cyfry
źródło
Retina ,
9283 bajtyWypróbuj online! Wyjaśnienie:
Poszukaj wszystkich nakładających się kwadratów 3x3. Lookbehind przechwytuje wcięcie dwa razy, dzięki czemu można je wyrównać na drugiej i trzeciej linii. Zakłada się, że dane wejściowe są prostokątne, więc nie musimy sprawdzać, czy grupy się równoważą. Następnie przechwytuje się dolne / górne środkowe komórki i lewe / prawe środkowe komórki.
Posortuj każdą parę komórek w kolejności.
Policz pozostałe prawidłowe wzorce.
źródło
Galaretka , 26 bajtów
Wypróbuj online!
Wyjaśnienie
-3 bajty dzięki Jonathanowi Allanowi (2) i Mr. Xcoderowi (3) (połączone)
źródło
D
. Mój zły, naprawiony....Fµ€ċ4R¤
zamiast...Ḍµ€ċ1234
(zwróć też uwagę, że1234
można by je zastąpić,⁽¡ḋ
aby zapisać jeden)Z3Ƥ
zamiastṡ3Z€
i⁼J$µ€S
zamiastḌµ€ċ1234
.Java 8,
135133131 bajtów-2 bajty dzięki @tehtmi za krótszą formułę:
(l*r-1)*(t*b-1)==11
do~(l*r)*~(t*b)==39
Wyjaśnienie:
Wypróbuj online.
źródło
~(l*r)*~(t*b)==39
(Haskell~
najwyraźniej nie ma 1 bajtu .)Łuska , 23 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Dyalog APL ,
3029282726 bajtów ( SBSC )Wypróbuj online!
źródło
⌽∘⊖×⊢
może być krótszy o 2 bajty, zgadnij jak?×∘⌽∘⊖⍨
(⌽×⊖)
⊢/
kolejnego -1. Nie myślałem o tym. W tej sytuacji nie powinieneś mnie przypisywać.Galaretka , 36 bajtów
Wypróbuj online!
37 bajtów
Z jakiegoś powodu nie mogę przenieść
Ḋm2$$
górnego linku.Wypróbuj online!
źródło
Czysty ,
255... 162 bajtówCzęsto nie jest korzystne stosowanie filtrów wzorca w zrozumieniu, ale w tym przypadku tak jest.
Wypróbuj online!
Definiuje funkcję
$
, przyjmowanie[[Int]]
i powrótInt
.Najpierw generuje wszystkie symetrie macierzy
m
(przekształcając przezf
),tails
z których te mają trzy lub więcej wierszy, i synchronicznie sprawdza, ile pierwszych trzech zestawów kolumn ztails
każdego wiersza pasuje do wzoru krzyża.Jest to równoważne licząc liczbę uszeregowanych
tails
-of-tails
dopasowanie wzorca[[_,1,_:_],[3,_,4:_],[_,2,_:_]:_]
- która z kolei jest logicznie tym samym sprawdzenie, czy dla każdej komórki w macierzy, że komórka jest w lewym górnym rogu każdej obrotu przekroju.źródło
Python 3,
120118 bajtówWypróbuj online!
Wykorzystuje fakt, że iloczyn przeciwnych par liczb w krzyżu musi wynosić odpowiednio 2 i 12, i porównuje z zestawem obejmującym wszystkie różne orientacje. Pobiera dane wejściowe jako tablicę liczb całkowitych 2D.
źródło
f=
do wynikuJapt
-x
,393833 bajtówWypróbuj online!
-1 bajt dzięki @Shaggy.
-5 bajtów dzięki @ETHproductions przez refaktoryzację tablicy.
Rozpakowane i jak to działa
Nie powinno nadal być lepszym sposobem na przetestowanie na krzyżu ...
źródło
e[2C]
.2
się w hoteluë2
?