Die Diedergruppe stellt die Symmetrien eines gleichseitigen Dreiecks, wobei die Identität (dargestellt durch id
), Rotationen (dargestellt durch r1
und r2
), und Reflexionen (dargestellt durch s0
, s1
, und s2
).
Ihre Aufgabe ist es, die Zusammensetzung der Elemente x , y ∈ D 3 zu berechnen . Sie sind in der folgenden Cayley-Tabelle aufgeführt:
x id r1 r2 s0 s1 s2
y +-----------------------
id | id r1 r2 s0 s1 s2
r1 | r1 r2 id s1 s2 s0
r2 | r2 id r1 s2 s0 s1
s0 | s0 s2 s1 id r2 r1
s1 | s1 s0 s2 r1 id r2
s2 | s2 s1 s0 r2 r1 id
Eingang
Jede vernünftige Eingabe von x
und y
. Bestellung spielt keine Rolle.
Ausgabe
y
zusammengesetzt mit x
oder Nachschlagen von Werten in der Tabelle basierend auf x
und y
.
Testfälle
Diese sind in der Form angegeben x y -> yx
.
id id -> id
s1 s2 -> r1
r1 r1 -> r2
r2 r1 -> id
s0 id -> s0
id s0 -> s0
Hinweise zu E / A.
Sie können jeden vernünftigen Ersatz von verwenden id, r1, r2, s0, s1, s2
, zum Beispiel 1, 2, 3, 4, 5, 6
, 0, 1, 2, 3, 4, 5
oder auch [0,0], [0,1], [0,2], [1,0], [1,1], [1,2]
(hier die erste Zahl steht für Rotation / Reflexion und der zweite ist der Index).
o
undO
sind Listen mit drei Elementen, die eine Permutation der ganzen Zahlen enthalten0, 1, 2
. Im Listenverständnis wird das erstere durch das letztere indiziert, wodurch die Permutationszusammensetzung implementiert wird.Gelee , 1 Byte
Eine dyadische Verbindung zwischen y links und x rechts.
Verwendet die Darstellungen der ersten drei natürlichen Zahlen, die transformiert wurden, wie ihre Handlungen beschreiben:
Eine Portierung von Jonathan Frechs Python-Antwort
ị
ist Jellys "Index in" Atom und es vektorisiert; Beachten Sie, dass Jelly 1-indiziert ist.Probieren Sie es online aus! Oder sehen Sie sich eine Tabelle mit den Fragennamen an .
Um x links und y rechts zu nehmen, können stattdessen folgende Werte verwendet werden:
... siehe hier .
quelle
JavaScript (ES6), 39 Byte
Verwendet die folgende Zuordnung:
Nimmt Eingabe als
(x)(y)
.Probieren Sie es online aus!
JavaScript (ES6), 20 Bytes
Verwenden des E / A-Formats von Jonathan Frech :
Probieren Sie es online aus!
quelle
Python 2 ,
272623 BytesProbieren Sie es online aus! Bearbeiten: 3 Bytes dank @NieDzejkob gespeichert. Verwendet die folgende Zuordnung:
quelle
x*-1
... Ich habex*(-1**y)
(-1)**y
. Na ja, das ist noch 1 Byte kürzer ...(-1)
5 für -3 Bytes durch 5 ersetzen .APL (Dyalog Classic) , 3 Bytes
Probieren Sie es online aus!
+.×
ist MatrixmultiplikationWir vertreten die Gruppe als
quelle
K (ngn / k) , 1 Byte
Probieren Sie es online aus!
x@y
ist die Listenindizierung, die der Zusammensetzung der Permutationen entspricht; Wir vertreten die Gruppe alsquelle
Japt , 2 Bytes
Verwendet Jonathans E / A-Format .
Probieren Sie es online aus
quelle
JavaScript (Node.js) ,
2419 ByteProbieren Sie es online aus! Bearbeiten: 2 Bytes durch Umschalten auf
**
und 3 Bytes dank @NieDzejkob gespeichert. Verwendet die folgende Zuordnung:Die alte 24-Byte-Version funktioniert auch in alten Versionen von JavaScript:
quelle
Schläger , 42 Bytes
Probieren Sie es online aus!
Eine langweilige Portierung von Neils Python-Antwort. Verwendet dasselbe E / A-Format, also:
quelle
05AB1E , 1 Byte
Port of @JonathanAllans Jelly-Antwort , jedoch mit 0-basierten Indizes, daher sind die Darstellungen:
Probieren Sie es online aus oder überprüfen Sie alle möglichen Kombinationen oder überprüfen Sie alle zugeordneten IDs .
Erläuterung:
quelle
Wolfram Language (Mathematica) , 16 Bytes
Probieren Sie es online aus!
Ein weiterer langweiliger Hafen von Neils Antwort, diesmal in Mathematica. Es ist eine anonyme Funktion, die Argumente in der Reihenfolge akzeptiert
[y, x]
.Hier ist die Eingabedarstellung:
quelle