Inspiriert und geplündert von dieser Würfelherausforderung von Arnauld
Eingang
Sie erhalten eine 5x1- oder 1x5-Würfelmatrix (nach Ihrer Wahl), die aus binären 3x3-Untermatrizen besteht.
Tor
Bei einer gültigen Würfelmatrix müssen Sie diese nach den folgenden Regeln von 6,5,4 bewerten:
- Wenn der Wurf 6,5,4 enthält, addieren Sie die beiden anderen Würfel und das ist Ihre Punktzahl. ZB 4, X, 5,6, Y = X + Y.
- Andernfalls ist die Punktzahl 0. ZB 5,5,5,4,1 = 0
Würfelmuster
Regeln
- Die Matrix enthält garantiert nur gültige Flächen, enthält jedoch die Permutationen 2,3 und 6. Sie können es auch in einer beliebigen Ausrichtung aufnehmen, wie es zweckmäßig ist. Bitte geben Sie in Ihrer Antwort die gewählte Ausrichtung an.
- Geben Sie die berechnete Punktzahl aus
- Standardlücken sind verboten
- Das ist Code-Golf .
Beispiele
// 2,5,2,4,6: Output should be: 4
[ [ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,1,0 ],
[ 1,0,1 ],
[ 0,0,1 ],
[ 0,0,0 ],
[ 1,0,0 ],
[ 1,0,1 ],
[ 0,0,0 ],
[ 1,0,1 ],
[ 1,1,1 ],
[ 0,0,0 ],
[ 1,1,1 ] ]
// 1,6,2,4,6: Output should be: 0
[ [ 0,0,0, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 0,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
// 5,6,6,4,6: Output should be: 12
[ [ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 1,0,1, 0,0,0, 0,0,0, 0,0,0 ],
[ 1,0,1, 1,0,1, 1,1,1, 1,0,1, 1,1,1 ] ]
// 3,3,4,5,6: Output should be: 6
[ [ 0,0,1, 1,0,0, 1,0,1, 1,0,1, 1,1,1 ],
[ 0,1,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 0,0,1, 1,0,1, 1,0,1, 1,1,1 ] ]
// 2,5,2,5,6: Output should be: 0
[ [ 0,0,1, 1,0,1, 1,0,0, 1,0,1, 1,1,1 ],
[ 0,0,0, 0,1,0, 0,0,0, 0,1,0, 0,0,0 ],
[ 1,0,0, 1,0,1, 0,0,1, 1,0,1, 1,1,1 ] ]
[2,5,2,5,6]
. Meine aktuelle Lösung funktioniert für alle vier Ihrer Testfälle (indem Sie eine sehr schlechte Methode zum Sortieren der Werte und zum Entfernen der Unterliste verwenden[4,5,6]
), die natürlich fehlschlägt, wenn5
sie zweimal vorhanden ist.Antworten:
05AB1E , 15 Bytes
Probieren Sie es online aus! oder Schauen Sie sich eine Testsuite an!
Verwendet den gleichen Trick wie Chas Brown und Lynn: Dekrementieren jeder Ganzzahl in jeder 3x3-Submatrix, anstatt am Ende 15 zu subtrahieren. Erwartet eine Eingabe im Spaltenformat.
Wie es funktioniert
quelle
Gelee , 14 Bytes
Probieren Sie es online aus!
Akzeptiert eine Würfelsäule.
Genau wie bei Chas Browns Python-Antwort wird dadurch jeder Würfelwert um –3 versetzt, sodass wir nicht 15 (4 + 5 + 6) von der allerletzten Summe abziehen müssen.
quelle
Python 2 , 81 Bytes
Probieren Sie es online aus!
Es wird erwartet, dass alle Eingaben in Spaltenform erfolgen.
quelle
Perl 6 ,
4846 BytesVielen Dank an Ramillies für -2 Bytes
Probieren Sie es online aus!
Ein anonymer Codeblock, der die Matrix vertikal nimmt und eine Ganzzahl zurückgibt.
Erläuterung:
quelle
.flat
statt.[*;*]
, wie diesMATL , 12 Bytes
Probieren Sie es online aus!
Nimmt die Eingabe in horizontaler Ausrichtung als 3x15-Matrix auf. @Chas Browns Trick, 3 früh (statt 15 später) zu subtrahieren, speicherte mehrere Bytes auf unterschiedliche Weise.
quelle
Brachylog ,
2322 Bytes24 Bytes (Sundar)Eines meiner ersten Branchylog-Programme. Kann wahrscheinlich mehr Golf gespielt werden.
Druckt falsch, wenn kein 4,5,6 vorhanden ist. idk wie man es 0 ausgeben lässt.Probieren Sie es online aus!
quelle
0
sofort ausgegeben wirdfalse
, sollte das Anhängen|∧0
am Ende den Job erledigen.ḍ₅
: Probieren Sie es online aus!I
: Probieren Sie es online aus! (Beachten Sie, dass ich auch das|∧0
hier hinzugefügt habe).R , 56 Bytes
Probieren Sie es online aus!
quelle
c(m)
, umm
zum[1:45]
Pyth , 20 Bytes
Erwartet die Eingabe als Würfelspalte (wie in Testfall 1). Versuchen Sie es online hier , oder prüfen Sie alle Testfälle auf einmal hier .
quelle
05AB1E ,
302922 BytesNimmt die Würfelmatrizen untereinander.
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
JavaScript (ES6), 78 Byte
Nimmt die Eingabe als Würfelspalte auf.
Probieren Sie es online aus!
Wie?
Auf diese Weise
a + 0
reduzieren und erzwingen wir implizit das Eingabearray zu einem String und fügen ein Trailing hinzu"0"
reduzieren erzwingen , das genau 5x18 = 90 Zeichen ergibt .Zum Beispiel führt der erste Testfall zu:
Für jeden Würfel-Teilstring s mit 18 Zeichen berechnen wir die Anzahl n von Pips + 1 und aktualisieren die Gesamtzahl von Pips t mit:
Wir verwenden das Eingabearray a erneut als Bitmaske, um jeden Würfel zu verfolgen, der mindestens einmal angetroffen wurde:
Wenn die Rolle mindestens eine 4 , eine 5 und eine 6 enthält , werden für die Bitmaske a die folgenden Bits gesetzt:
Wir testen dies, indem wir dies tun
a > 223
. Bei Erfolg geben wir t zurück . Da wir für jeden Würfel einen zusätzlichen Pip zählen und im Ergebnis nicht 4 + 5 + 6 zählen möchten , wird t auf - (5 + (4 + 5 + 6)) = -20 initialisiert .quelle
Dyalog APL ,
2827 BytesProbieren Sie es online aus!
Nimmt eine 1x5-Matrix von 3x3-Würfelmatrizen als Eingabe.
+/¨,¨
addiert die Pip-Werte jedes Würfels. Subtrahieren Sie dann 3, um∨/⍉⍵∘.=⍳3
zu überprüfen, ob jeweils mindestens eine Instanz von (1, 2, 3) vorhanden ist, UND die Ergebnisse zusammen mit∧/
und multiplizieren Sie das Ergebnis (0 oder 1) mit der Summe der angepassten Würfelwerte (+/⍵
).quelle
Retina 0,8,2 , 45 Bytes
Probieren Sie es online aus! Nimmt vertikale Würfel. Erläuterung:
Formen Sie die Würfel in 5 einzelne Reihen um.
Holen Sie sich die Werte jeder Zeile.
Sortieren Sie sie in der richtigen Reihenfolge.
Verbinden Sie sie zu einer einzigen Zeichenfolge.
Stellen Sie sicher, dass die drei erforderlichen Würfel vorhanden sind.
Wandle jeden Würfel in unär um.
Subtrahieren Sie die passenden 4, 5 und 6.
Summiere und konvertiere in Dezimalzahl.
quelle
Gelee , 18 Bytes
Eine monadische Verbindung
Probieren Sie es online aus!
quelle
Oktave , 54 Bytes
Probieren Sie es online aus!
Port meiner MATL-Antwort.
quelle
Ruby , 78 Bytes
Probieren Sie es online aus!
quelle