T er aus der Ordnung der St Golfus Brüder , die Concise hat eine Tradition, ein kurzes Gebet zu rezitieren , wenn sie sehen , dass jemand das machen Zeichen des Kreuzes . Aufgrund des hohen Grades an Sünde, der in letzter Zeit bei Touristen festgestellt wurde, haben sie im Kloster Videoüberwachung installiert und Sie beauftragt, ihnen dabei zu helfen, alte Traditionen im Zeitalter der KI am Leben zu erhalten.
Ihre Aufgabe ist es, die Ausgabe der Finger-Tracking-Software der Brüder zu analysieren und festzustellen, wie viele Gebete fällig sind. Die Eingabe ist eine Matrix, die Ganzzahlen zwischen 0 und 4 enthält. 1,2,3,4 repräsentieren die Positionen der Finger zu aufeinanderfolgenden Zeitpunkten. 0 steht für Nicht-Finger.
Der One True Way TM , um sich selbst zu kreuzen, ist:
.1.
3.4
.2.
("." entspricht einer beliebigen Ziffer). Aufgrund der Ungewissheit über die Rotation der Kamera und der Anwesenheit frommer ostorthodoxer Brüder in der Menge (deren One True Way TM in die entgegengesetzte Richtung zur Seite zeigt) sollten Sie auch alle Rotationen und Reflexionen zählen:
.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.
Eine Ziffer kann Teil mehrerer Kreuze sein. Helfen Sie den Brüdern, zu bestimmen, wie oft ihre KI vorhanden sein soll, .pray()
indem Sie zählen, wie viele der oben genannten 3x3-Submatrizen vorhanden sind. Schreiben Sie ein Programm oder eine Funktion. Nehmen Sie Eingaben in einer angemessenen und praktischen Form vor.
Testament Fälle:
// 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
"Gesegnet sei das kürzeste der Kürzesten, denn es gewinnt das Königreich der Aufstimmungen." -Buch des heiligen Golfus 13:37
"Du sollst keine Schlupflöcher benutzen, denn sie sind die bösen Werke Luzifers." -Brief an die Meta 13: 666
Leichte Visualisierung von Menschen, die das Kreuz machen
Danke @Tschallacka für die Visualisierung.
Antworten:
Schmutz , 20 Bytes
Probieren Sie es online!
Eine sehr wörtliche Umsetzung der Spezifikation:
n`
make Grime zählt die Anzahl der Unterrechtecke der Eingabe, die eine Übereinstimmung ergeben..\1./\3.\4/.\2.
definiert das 3x3 Quadrat:Wo
.
kann ein beliebiges Zeichen sein.oO
ist ein Orientierungsmodifikator, mit dem dieses Rechteck in jeder Drehung oder Reflexion angezeigt werden kann. Dasv
wird verwendet, um dieo
Priorität zu verringern, damit wir keine runden Klammern um das Quadrat benötigen.quelle
Schnecken ,
1716 BytesProbieren Sie es online!
Erläuterung
A
lässt Snails die Anzahl der möglichen übereinstimmenden Pfade in der gesamten Eingabe zählen.o
Legt die Startrichtung auf eine beliebige orthogonale Richtung fest (anstatt nur nach Osten). Das Muster selbst befindet sich in der zweiten Zeile:quelle
Haskell,
10810293 BytesProbieren Sie es online!
Kein Regex. Muster Match
Nehmen Sie in der linken oberen Ecke der Matrix ein
1
if(l*r-1)*(t*b-1)==11
und gehen Sie rekursiv nach rechts (drop.l.
) und nach unten (drop first row). Wenn das Muster nicht übereinstimmt (am rechten oder unteren Rand), nimm a0
. Summiere alle Ergebnisse.Edit: -9 Bytes dank @xnor.
quelle
2^(l*r)+2^(t*b)==4100
, die Zahlen zu überprüfen, aber es scheint, dass beide unsere Lösungen2,6
anstelle von ausgetrickst werden3,4
.0..4
(l*r-1)*(t*b-1)==11
.Perl, 70 Bytes
Beinhaltet +2 für
0p
Geben Sie die Eingabematrix als Ziffernblock ohne Leerzeichen in STDIN ein:
Dreht das Kreuz durch Drehen der Ziffern
quelle
Retina ,
9283 BytesProbieren Sie es online! Erläuterung:
Achten Sie auf alle überlappenden 3x3-Quadrate. Ein Lookbehind erfasst den Einzug zweimal, sodass er in der zweiten und dritten Zeile ausgeglichen werden kann. Die Eingabe wird als rechteckig angenommen, damit wir nicht überprüfen müssen, ob die Gruppen ausgeglichen sind. Die unteren / oberen mittleren Zellen und die linken / rechten mittleren Zellen werden dann erfasst.
Sortieren Sie jedes Zellenpaar in der richtigen Reihenfolge.
Zählen Sie die verbleibenden gültigen Muster.
quelle
Gelee , 26 Bytes
Probieren Sie es online!
Erläuterung
-3 Bytes dank Jonathan Allan (2) und Mr. Xcoder (3) (zusammengeführt)
quelle
D
. Mein schlechtes, repariertes....Fµ€ċ4R¤
anstatt...Ḍµ€ċ1234
(auch beachten Sie, dass1234
ersetzt werden könnte⁽¡ḋ
, um eine zu speichern)Z3Ƥ
anstelle vonṡ3Z€
und⁼J$µ€S
anstelle vonḌµ€ċ1234
.Java 8,
135133131 Bytes-2 Bytes danke an @tehtmi für eine kürzere Formel:
(l*r-1)*(t*b-1)==11
to~(l*r)*~(t*b)==39
Erläuterung:
Probieren Sie es online aus.
quelle
~(l*r)*~(t*b)==39
(Haskell hat~
anscheinend kein 1-Byte .)Schale , 23 Bytes
Probieren Sie es online!
Erläuterung
quelle
Dyalog APL ,
3029282726 Byte ( SBSC )Probieren Sie es online!
quelle
⌽∘⊖×⊢
könnte um 2 Bytes kürzer sein, können Sie raten, wie?×∘⌽∘⊖⍨
(⌽×⊖)
⊢/
für ein weiteres -1 nach links verschoben . Daran habe ich nicht gedacht. In dieser Situation sollten Sie mich nicht gutschreiben.Gelee , 36 Bytes
Probieren Sie es online!
37 Bytes
Aus irgendeinem Grund kann ich
Ḋm2$$
den Link nicht nach oben verschieben.Probieren Sie es online!
quelle
Sauber ,
255... 162 BytesEs ist nicht vorteilhaft, häufig Musterfilter in Verstehen zu verwenden, aber in diesem Fall ist es das auch.
Probieren Sie es online!
Definiert die Funktion
$
, Entgegennehmen[[Int]]
und ZurückgebenInt
.Zunächst werden alle Symmetrien der Matrix generiert
m
(Transformation überf
),tails
wobei drei oder mehr Zeilen verwendet werden und synchron überprüft wird, wie viele der ersten drei Spaltensätze austails
jeder Zeile mit dem Kreuzmuster übereinstimmen.Dies entspricht dem Zählen der Anzahl der geordneten
tails
Übereinstimmungentails
mit dem Muster. Dies entspricht[[_,1,_:_],[3,_,4:_],[_,2,_:_]:_]
logischerweise der Überprüfung, ob diese Zelle für jede Zelle in der Matrix die linke obere Ecke einer Kreuzrotation ist.quelle
Python 3,
120 -118 BytesProbieren Sie es online!
Verwendet die Tatsache, dass das Produkt von entgegengesetzten Zahlenpaaren im Kreuz 2 bzw. 12 sein muss und mit einer Menge verglichen wird, die alle unterschiedlichen Ausrichtungen abdeckt. Nimmt die Eingabe als 2D-Array von Ganzzahlen auf.
quelle
f=
in der Partitur zählenJapt
-x
,393833 BytesProbieren Sie es online!
-1 Byte dank @Shaggy.
-5 Bytes dank @ETHproductions durch Refactoring des Arrays.
Ausgepackt und wie es funktioniert
Es sollte immer noch einen besseren Weg geben, um das Kreuz zu testen ...
quelle
e[2C]
.2
inë2
?