Eingang
Eine nicht leere binäre Matrix bestehend aus 3x3 Submatrizen, die nebeneinander angeordnet sind.
Aufgabe
Ihre Aufgabe ist es, gültige Würfelmuster (wie unten beschrieben) unter den 3x3-Submatrizen zu identifizieren. Jedes gültige Muster ist den Wert der entsprechenden Würfel wert. Ungültige Muster sind 0 wert.
Ausgabe
Die Summe der gültigen Würfelwerte.
Würfelmuster
Beispiel
Die erwartete Ausgabe für die folgende Matrix ist 14, da sie die Würfel 5 , 6 und 3 enthält , gefolgt von einem ungültigen Muster (von links nach rechts und von oben nach unten).
Regeln
- Sowohl die Breite als auch die Höhe der Matrix betragen garantiert ein Vielfaches von 3.
- Sie müssen Untermatrizen ignorieren, die auf dem Raster nicht richtig ausgerichtet sind (siehe 3. Testfall). Formaler und unter der Annahme einer 0-Indexierung: Die Koordinaten der oberen linken Zelle jeder zu betrachtenden Untermatrix haben die Form .
- Das ist Code-Golf .
Testfälle
// 0
[ [ 1,0,0 ],
[ 0,0,1 ],
[ 1,0,0 ] ]
// 2
[ [ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ] ]
// 0 (0 + 0)
[ [ 0,0,1,0,1,0 ],
[ 0,0,0,1,0,0 ],
[ 0,0,1,0,1,0 ] ]
// 9 (3 + 3 + 3)
[ [ 1,0,0,0,0,1,1,0,0 ],
[ 0,1,0,0,1,0,0,1,0 ],
[ 0,0,1,1,0,0,0,0,1 ] ]
// 6 (6 + 0)
[ [ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,1 ],
[ 1,0,0 ],
[ 1,0,1 ] ]
// 14 (5 + 6 + 3 + 0)
[ [ 1,0,1,1,1,1 ],
[ 0,1,0,0,0,0 ],
[ 1,0,1,1,1,1 ],
[ 1,0,0,0,0,0 ],
[ 0,1,0,0,1,0 ],
[ 0,0,1,0,1,0 ] ]
// 16 (1 + 2 + 3 + 4 + 0 + 6)
[ [ 0,0,0,1,0,0,1,0,0 ],
[ 0,1,0,0,0,0,0,1,0 ],
[ 0,0,0,0,0,1,0,0,1 ],
[ 1,0,1,1,1,1,1,0,1 ],
[ 0,0,0,1,0,1,1,0,1 ],
[ 1,0,1,1,1,1,1,0,1 ] ]
//3
und verwenden Sie'0'+''.join...
, um zwei Bytes zu speichern :)R , 134 Bytes
Probieren Sie es online!
Mir ist aufgefallen, dass ich die gleiche Idee von @Heteira hatte
Geschichte :
171: -10 Bytes dank @JayCe!161: -3 Bytes dank @ Giuseppe!158: -13 Bytes gespeichert!145: -2 Bytes dank @ Giuseppe!143: -6 Bytes gespeichert!137: -3 Bytes dank @JayCe!quelle
dim
(2^(8:0))
die entfernt werden können.cat
der Ausgabe vonintToUtf8
: Save 3 BytesPerl 6 ,
113 105 9794 BytesProbieren Sie es online!
Teilt die Matrix in Untermatrizen von 3x3 auf, konvertiert die neun Einsen und Nullen zur Basis 2 und indiziert sie dann in eine Liste von Ganzzahlen für den Wert.
Erläuterung:
quelle
Jelly ,
2928 Bytes-1 dank Mr. Xcoder (
Ṁ
zum Ersetzen verwendenṢṪ
)Eine monadische Verbindung.
Probieren Sie es online! Oder führen Sie die Tests durch .
Wie?
Zum Beispiel, wenn eine Untermatrix ist:
Dann
ZU,Ɗ
ergibt sich:... was sich in was abflacht
[0, 0, 0, 1, 1, 1, 1, 1, 1]
, was aus dem Binären konvertiert,63
was der sechste Eintrag in der Codepage-Indexliste ist“°€⁼-Ḍ?‘
(?
Byte3F
in Jellys Codepage )quelle
Ṁ
könnte funktionieren anstattṢṪ
für -1.M
>. <). Kann etwas Kluges getan werden mitŒṪ
Ich frage mich ...Japt
-x
, 36 BytesJetzt wird es interessant. Ich bin sicher, dass man noch mehr Golf spielen kann
Probieren Sie es online!
quelle
Retina 0.8.2 , 90 Bytes
Probieren Sie es online! Erläuterung:
Füge alle Blöcke zusammen und teile sie dann wieder in 9 Spalten auf.
Behalten Sie nur gültige Würfelmuster bei (zwei Muster für
6
, dann stimmt eines mit einer beliebigen Anzahl von0
bis überein5
, obwohl dies0
natürlich nicht zur unten angegebenen Anzahl beiträgt.)Zählen Sie die Pips auf den gültigen Würfeln.
quelle
Rubin , 151 Bytes
Probieren Sie es online!
Ein Lambda, das ein 2d-Array von Ints (oder Strings, denke ich) akzeptiert. Lässt sich von Jo Kings Antwort inspirieren . Ich habe das Gefühl, dass das Herausschneiden der Würfel aus der Eingabematrix viel Platz in Anspruch nimmt, sodass ich möglicherweise überfordert bin. Glücklicherweise hat mich der Umgang mit Nullen nur eine Handvoll Bytes gekostet.
Ungolfed:
quelle
Clojure, 197 Bytes
Ich hätte mir etwas schlaueres einfallen lassen sollen.
quelle
Python 2 , 159 Bytes
Probieren Sie es online!
Hutspitze an Jonathan Frech für den Unicode-Codierungsansatz.
quelle