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

Jawaban:



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 .



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  

@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 

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


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

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  

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

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 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.