Cayley-Tabelle der Diedergruppe

8

Die Diedergruppe D.3 stellt die Symmetrien eines gleichseitigen Dreiecks, wobei die Identität (dargestellt durch id), Rotationen (dargestellt durch r1und 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:yxx,yD.3

  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 xund y. Bestellung spielt keine Rolle.

Ausgabe

yzusammengesetzt mit xoder Nachschlagen von Werten in der Tabelle basierend auf xund 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, 5oder 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).

qwr
quelle

Antworten:

8

Python 2 , 27 Bytes

lambda o,O:[o[_]for _ in O]

Probieren Sie es online aus!

Jonathan Frech
quelle
Kannst du diesen Code erklären?
Tarit Goswami
1
@taritgoswami Beide ound Osind Listen mit drei Elementen, die eine Permutation der ganzen Zahlen enthalten 0, 1, 2. Im Listenverständnis wird das erstere durch das letztere indiziert, wodurch die Permutationszusammensetzung implementiert wird.
Jonathan Frech
3

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:

   name:  id          r1          r2          s0          s1          s2
  value:  [1,2,3]     [2,3,1]     [3,1,2]     [2,1,3]     [1,3,2]     [3,2,1]
(action:  identity    rot-Left    rot-Right   swap-Left   swap-Right  swap-Outer)

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:

id       r1       r2       s0       s1       s2
[1,2,3]  [3,1,2]  [2,3,1]  [1,3,2]  [3,2,1]  [2,1,3]

... siehe hier .

Jonathan Allan
quelle
3

Python 2 , 27 26 23 Bytes

lambda x,y:(y+x*5**y)%6

Probieren Sie es online aus! Bearbeiten: 3 Bytes dank @NieDzejkob gespeichert. Verwendet die folgende Zuordnung:

 id | r1 | r2 | s0 | s1 | s2 
----+----+----+----+----+----
 0  | 2  | 4  | 1  | 3  | 5  
Neil
quelle
@ JonathanFrech ... Ich habe nicht x*-1... Ich habex*(-1**y)
Neil
@ JonathanFrech Ah, ich hatte meinen Testcode getippt und dachte, ich würde ihn bekommen (-1)**y. Na ja, das ist noch 1 Byte kürzer ...
Neil
Hm ... Und ich dachte, ich hätte ein Byte Golf gespielt ...
Jonathan Frech
Wie bei der D4-Challenge können Sie (-1)5 für -3 Bytes durch 5 ersetzen .
NieDzejkob
2

K (ngn / k) , 1 Byte

@

Probieren Sie es online aus!

x@yist die Listenindizierung, die der Zusammensetzung der Permutationen entspricht; Wir vertreten die Gruppe als

id:0 1 2; r1:1 2 0; r2:2 0 1; s0:2 1 0; s1:1 0 2; s2:0 2 1
ngn
quelle
1

JavaScript (Node.js) , 24 19 Byte

(x,y)=>(y+x*5**y)%6

Probieren Sie es online aus! Bearbeiten: 2 Bytes durch Umschalten auf **und 3 Bytes dank @NieDzejkob gespeichert. Verwendet die folgende Zuordnung:

 id | r1 | r2 | s0 | s1 | s2 
----+----+----+----+----+----
 0  | 2  | 4  | 1  | 3  | 5  

Die alte 24-Byte-Version funktioniert auch in alten Versionen von JavaScript:

(x,y)=>(y%2?y+6-x:y+x)%6
Neil
quelle
1

Schläger , 42 Bytes

(lambda(x y)(modulo(+ y(* x(expt 5 y)))6))

Probieren Sie es online aus!

Eine langweilige Portierung von Neils Python-Antwort. Verwendet dasselbe E / A-Format, also:

 id | r1 | r2 | s0 | s1 | s2 
----+----+----+----+----+----
 0  | 2  | 4  | 1  | 3  | 5  
Genosse SparklePony
quelle
0

05AB1E , 1 Byte

è

Port of @JonathanAllans Jelly-Antwort , jedoch mit 0-basierten Indizes, daher sind die Darstellungen:

id       r1       r2       s0       s1       s2       # Original values
[0,1,2]  [1,2,0]  [2,0,1]  [1,0,2]  [0,2,1]  [2,1,0]  # Values instead

Probieren Sie es online aus oder überprüfen Sie alle möglichen Kombinationen oder überprüfen Sie alle zugeordneten IDs .

Erläuterung:

è  # Index the second (implicit) input-list vectorized into the first (implicit) input-list
   # And output the result implicitly
Kevin Cruijssen
quelle
0

Wolfram Language (Mathematica) , 16 Bytes

Mod[#+#2*5^#,6]&

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:

 id | r1 | r2 | s0 | s1 | s2 
----+----+----+----+----+----
 0  | 2  | 4  | 1  | 3  | 5 
Genosse SparklePony
quelle