Tabla de Cayley del Grupo Diedro


8

El grupo Dihedral re3 representa las simetrías de un triángulo equilátero, utilizando la identidad (representada por id), rotaciones (representados por r1y r2), y las reflexiones (representados por s0, s1y s2).

Su tarea es calcular la composición de los elementos x , y D 3 . Los da la siguiente tabla de Cayley:yXX,yre3

  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

Entrada

Cualquier aportación razonable de xy y. El orden no importa.

Salida

ycompuesto con x, o buscando valores en la tabla basados ​​en xyy .

Casos de prueba

Estos se dan en el formulario x y -> yx.

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

Notas sobre E / S

Puede usar cualquier reemplazo razonable de id, r1, r2, s0, s1, s2, por ejemplo 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5o incluso [0,0], [0,1], [0,2], [1,0], [1,1], [1,2](aquí el primer número representa la rotación / reflexión y el segundo es el índice).

Respuestas:



3

Gelatina , 1 byte

Un enlace diádico que toma y a la izquierda yx a la derecha.

Utiliza las representaciones del puño tres números naturales transformados como describen sus acciones:

   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)

Un puerto de la respuesta de Python de Jonathan Frech

es el átomo de "índice en" de Jelly, y se vectoriza; Tenga en cuenta que Jelly está indexada en 1.

Pruébalo en línea! O vea una tabla usando los nombres de las preguntas .


Para tomar x a la izquierda e y a la derecha, estos valores pueden usarse en su lugar:

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

... mira aquí .



3

Python 2 , 27 26 23 bytes

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

Pruébalo en línea! Editar: Guardado 3 bytes gracias a @NieDzejkob. Utiliza el siguiente mapeo:

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

@ JonathanFrech ... no tengo x*-1... tengox*(-1**y)
Neil

@ JonathanFrech Ah, había escrito mi código de prueba, pensé que estaba obteniendo (-1)**y. Oh, bueno, eso todavía es 1 byte más corto ...
Neil

Hm ... y pensé que jugaba un byte ...
Jonathan Frech el

Al igual que en el desafío D4, puede reemplazar (-1)con 5 por -3 bytes.
NieDzejkob

2

APL (Dyalog Classic) , 3 bytes

+.×

Pruébalo en línea!

+.× es la multiplicación de matrices

representamos al grupo como

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

@

Pruébalo en línea!

x@yes la indexación de listas, que es lo mismo que la composición de permutaciones; representamos al grupo como

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 bytes

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

Pruébalo en línea! Editar: se guardaron 2 bytes cambiando **y 3 bytes gracias a @NieDzejkob. Utiliza el siguiente mapeo:

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

La versión anterior de 24 bytes también funciona en versiones antiguas de JavaScript:

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

1

Raqueta , 42 bytes

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

Pruébalo en línea!

Un puerto aburrido de la respuesta Python de Neil. Utiliza el mismo formato de E / S, por lo tanto:

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

0

05AB1E , 1 byte

è

Puerto de la respuesta Jelly de @JonathanAllan , pero con índices basados ​​en 0, por lo que las representaciones son:

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

Pruébelo en línea o verificar todas las combinaciones posibles o verificar toda la vuelta asignada a los identificadores .

Explicación:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.