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).

Antworten:



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 .



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  

@ 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




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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.