Tabel Cayley dari Grup

8

The Dihedral kelompokD3 mewakili simetri dari sebuah segitiga sama sisi, dengan menggunakan identitas (diwakili oleh id), rotasi (diwakili oleh r1dan r2), dan refleksi (diwakili oleh s0, s1dan s2).

Tugas Anda adalah menghitung komposisi dari elemen . Mereka diberikan oleh tabel Cayley di bawah ini:x , y D 3yxx,yD3

  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

Memasukkan

Setiap input masuk akal xdan y. Urutan tidak masalah.

Keluaran

ydisusun dengan x, atau mencari nilai dalam tabel berdasarkan xdan y.

Uji Kasus

Ini diberikan dalam bentuk x y -> yx.

id id -> id
s1 s2 -> r1
r1 r1 -> r2
r2 r1 -> id
s0 id -> s0
id s0 -> s0

Catatan tentang I / O

Anda dapat menggunakan pengganti wajar id, r1, r2, s0, s1, s2, misalnya 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5atau bahkan [0,0], [0,1], [0,2], [1,0], [1,1], [1,2](di sini angka pertama mewakili rotasi / refleksi dan yang kedua adalah indeks).

qwr
sumber

Jawaban:

8

Python 2 , 27 byte

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

Cobalah online!

Jonathan Frech
sumber
bisakah kamu menjelaskan kode ini?
tarit goswami
1
@taritgoswami Keduanya odan daftar Otiga elemen yang berisi permutasi bilangan bulat 0, 1, 2. Dalam pemahaman daftar, yang pertama diindeks oleh yang terakhir, menerapkan komposisi permutasi.
Jonathan Frech
3

Jelly , 1 byte

Tautan diadik yang mengambil y di kiri dan x di kanan.

Menggunakan representasi dari tiga bilangan asli yang ditransformasikan sebagai tindakan mereka menggambarkan:

   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)

Port jawaban Python Jonathan Frech

adalah "indeks ke" atom Jelly, dan itu vektor; Perhatikan bahwa Jelly adalah 1-diindeks.

Cobalah online! Atau lihat tabel menggunakan nama-pertanyaan .


Untuk mengambil x di kiri dan y di kanan, nilai-nilai ini dapat digunakan sebagai gantinya:

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

... lihat di sini .

Jonathan Allan
sumber
3

JavaScript (ES6), 39 byte

Gunakan pemetaan berikut:

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

Mengambil input sebagai (x)(y).

x=>y=>'450123234523012323'[(x*51^y)%18]

Cobalah online!


JavaScript (ES6), 20 byte

Menggunakan format I / O Jonathan Frech :

x=>y=>y.map(n=>x[n])

Cobalah online!

Arnauld
sumber
3

Python 2 , 27 26 23 byte

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

Cobalah online! Sunting: Disimpan 3 byte berkat @NieDzejkob. Gunakan pemetaan berikut:

 id | r1 | r2 | s0 | s1 | s2 
----+----+----+----+----+----
 0  | 2  | 4  | 1  | 3  | 5  
Neil
sumber
@JonathanFrech ... Saya tidak punya x*-1... Saya punyax*(-1**y)
Neil
@ JonathanFrech Ah, saya salah ketik kode tes saya, saya pikir saya mendapatkan (-1)**y. Oh well, itu masih 1 byte lebih pendek ...
Neil
Hm ... Dan saya pikir saya bermain golf ...
Jonathan Frech
Seperti pada tantangan D4, Anda dapat mengganti (-1)dengan 5 untuk -3 byte.
NieDzejkob
2

APL (Dyalog Classic) , 3 byte

+.×

Cobalah online!

+.× adalah perkalian matriks

kami mewakili grup sebagai

id     r1     r2     s0     s1     s2
1 0 0  0 0 1  0 1 0  0 0 1  0 1 0  1 0 0 
0 1 0  1 0 0  0 0 1  0 1 0  1 0 0  0 0 1 
0 0 1  0 1 0  1 0 0  1 0 0  0 0 1  0 1 0 
ngn
sumber
2

K (ngn / k) , 1 byte

@

Cobalah online!

x@yadalah pengindeksan daftar, yang sama dengan komposisi permutasi; kami mewakili grup sebagai

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
sumber
1

JavaScript (Node.js) , 24 19 byte

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

Cobalah online! Sunting: Disimpan 2 byte dengan beralih ke **dan 3 byte berkat @NieDzejkob. Gunakan pemetaan berikut:

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

Versi 24 byte yang lama juga berfungsi di versi JavaScript yang lama:

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

Racket , 42 byte

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

Cobalah online!

Port membosankan jawaban Neil's Python. Menggunakan format I / O yang sama, jadi:

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

05AB1E , 1 byte

è

Port of @JonathanAllan 's Jelly answer , tetapi dengan indeks berbasis 0, jadi representasinya adalah:

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

Cobalah online atau verifikasi semua kombinasi yang mungkin atau verifikasi semua yang dipetakan kembali ke id .

Penjelasan:

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

Bahasa Wolfram (Mathematica) , 16 byte

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

Cobalah online!

Port lain yang membosankan dari jawaban Neil, kali ini di Mathematica. Ini adalah fungsi anonim yang mengambil argumen dalam urutan [y, x].

Inilah representasi input:

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