Les frères de l'ordre de St Golfus le Concise ont l'habitude de réciter une courte prière chaque fois qu'ils voient quelqu'un faire le signe de la croix . En raison du niveau élevé de péché observé récemment par les touristes, ceux-ci ont installé un système de vidéosurveillance dans le monastère et ils vous ont embauché pour les aider à garder la vieille tradition vivante à l'ère de l'IA.
Votre tâche consiste à analyser les résultats du logiciel de suivi des doigts des frères et à dire combien de prières doivent être faites. L'entrée est une matrice contenant des entiers compris entre 0 et 4. 1,2,3,4 représentent les positions des doigts à des instants consécutifs. 0 représente les non-doigts.
La One True Way TM pour se croiser, c'est:
.1.
3.4
.2.
("." correspond à n'importe quel chiffre). Cependant, en raison de l'incertitude entourant la rotation de la caméra et de la présence de pieux frères orthodoxes orientaux dans la foule (dont One True Way TM est dans la direction opposée), vous devez également compter toutes les rotations et réflexions:
.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.
Un chiffre peut faire partie de plusieurs croix. Aidez les frères à déterminer le nombre de fois que leur IA devrait .pray()
compter en comptant le nombre de sous-matrices 3x3 ci-dessus présentes. Ecrivez un programme ou une fonction. Prenez des entrées sous toute forme convenable raisonnable.
Cas de testament:
// 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éni soit le plus court des shortests, car il gagne le royaume des upvotes." Livre de St Golfus 13:37
"Tu n'utiliseras pas de meurtrières, car ce sont les mauvaises oeuvres de Lucifer." - Lettre aux Meta 13: 666
Légère visualisation des personnes faisant la croix
Merci @Tschallacka pour la visualisation.
Réponses:
Grime , 20 octets
Essayez-le en ligne!
Une implémentation très littérale de la spécification:
n`
make Grime compte le nombre de sous-segments de l'entrée qui donne une correspondance..\1./\3.\4/.\2.
définit le carré 3x3:Où
.
peut être n'importe quel personnage.oO
est un modificateur d'orientation qui permet à ce rectangle d'apparaître dans n'importe quelle rotation ou réflexion. Lev
est utilisé pour réduire lao
priorité afin de ne pas avoir besoin de parenthèses autour du carré.la source
Escargots ,
17 à16 octetsEssayez-le en ligne!
Explication
A
fait que Snails compte le nombre de chemins correspondants possibles dans l’entrée entière.o
définit la direction de départ sur n'importe quelle direction orthogonale (au lieu de simplement vers l'est). Le motif lui-même est sur la deuxième ligne:la source
Haskell,
10810293 octetsEssayez-le en ligne!
Pas de regex. Correspondance de modèle
dans le coin supérieur gauche de la matrice, prenez un
1
if(l*r-1)*(t*b-1)==11
et allez récursivement à droite (lâcher.l.
) et vers le bas (lâcher la première ligne). Si le motif ne peut pas être assorti (à droite ou en bas), prenez un0
. Somme tous les résultats.Edit: -9 octets grâce à @xnor.
la source
2^(l*r)+2^(t*b)==4100
de vérifier les chiffres, mais il semble que nos deux solutions sont trompées2,6
à la place de3,4
.0..4
(l*r-1)*(t*b-1)==11
.Perl, 70 octets
Comprend +2 pour
0p
Donne la matrice d’entrée sous forme de bloc de chiffres sans espaces sur STDIN:
Fait pivoter la croix en tournant les chiffres
la source
Retina ,
9283 octetsEssayez-le en ligne! Explication:
Recherchez tous les carrés 3x3 qui se chevauchent. Un regard en arrière capture le retrait deux fois afin qu'il puisse être équilibré sur les deuxième et troisième lignes. L'entrée est supposée être rectangulaire, nous n'avons donc pas à vérifier que les groupes s'équilibrent. Les cellules du centre en bas / haut et les cellules du milieu gauche / droite sont ensuite capturées.
Triez chaque paire de cellules dans l'ordre.
Comptez les modèles valides restants.
la source
Gelée , 26 octets
Essayez-le en ligne!
Explication
-3 octets grâce à Jonathan Allan (2) et à M. Xcoder (3) (fusionnés)
la source
D
. Mon mauvais, réparé....Fµ€ċ4R¤
plutôt que...Ḍµ€ċ1234
(notez également que cela1234
aurait pu être remplacé par⁽¡ḋ
pour en économiser un)Z3Ƥ
au lieu deṡ3Z€
et⁼J$µ€S
au lieu deḌµ€ċ1234
.Java 8,
135133131 octets-2 octets merci à @tehtmi pour une formule plus courte:
(l*r-1)*(t*b-1)==11
to~(l*r)*~(t*b)==39
Explication:
Essayez-le en ligne.
la source
~(l*r)*~(t*b)==39
(Haskell n'a~
apparemment pas 1 octet .)Coque , 23 octets
Essayez-le en ligne!
Explication
la source
Dyalog APL ,
3029282726 octets ( SBSC )Essayez-le en ligne!
la source
⌽∘⊖×⊢
pourrait être plus court de 2 octets, pouvez-vous deviner comment?×∘⌽∘⊖⍨
(⌽×⊖)
⊢/
pour -1. Je n'ai pas pensé à ça. Dans cette situation, vous ne devriez pas me créditer.Gelée , 36 octets
Essayez-le en ligne!
37 octets
Pour une raison quelconque, je ne peux pas déplacer le
Ḋm2$$
lien vers le haut.Essayez-le en ligne!
la source
Nettoyer ,
255... 162 octetsIl n'est pas avantageux d'utiliser souvent des filtres de modèle dans les compréhensions, mais dans ce cas, ça l'est.
Essayez-le en ligne!
Définit la fonction
$
, en prenant[[Int]]
et en revenantInt
.Il génère d’abord toutes les symétries de la matrice
m
(transformation viaf
), prend cellestails
qui ont trois rangées ou plus et vérifie de manière synchrone combien des trois premiers ensembles de colonnes de latails
de chaque rangée correspondent au motif de la croix.Ceci est équivalent à compter le nombre de commandé
tails
-OF-tails
correspondant au motif[[_,1,_:_],[3,_,4:_],[_,2,_:_]:_]
- qui est à son tour logiquement identique à vérifier si, pour chaque cellule dans la matrice, cette cellule est le coin supérieur gauche de toute rotation de la croix.la source
Python 3,
120118 octetsEssayez-le en ligne!
Utilise le fait que le produit des paires opposées de nombres dans la croix doit être 2 et 12 respectivement, et se compare à un ensemble pour couvrir toutes les orientations différentes. Prend l'entrée sous forme de tableau 2D d'entiers.
la source
f=
dans le scoreJapt
-x
,393833 octetsEssayez-le en ligne!
-1 octet grâce à @Shaggy.
-5 octets grâce à @ETHproductions en refacturant le tableau.
Déballé et comment ça marche
Il devrait encore y avoir un meilleur moyen de tester la croix ...
la source
e[2C]
.2
enë2
?