El grupo Dihedral representa las simetrías de un triángulo equilátero, utilizando la identidad (representada por id
), rotaciones (representados por r1
y r2
), y las reflexiones (representados por s0
, s1
y s2
).
Su tarea es calcular la composición de los elementos x , y ∈ D 3 . Los da la siguiente tabla de Cayley:
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 x
y y
. El orden no importa.
Salida
y
compuesto con x
, o buscando valores en la tabla basados en x
yy
.
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, 5
o 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).
o
yO
son listas de tres elementos que contienen una permutación de los enteros0, 1, 2
. En la lista de comprensión, el primero es indexado por el segundo, implementando la composición de permutación.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:
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:
... mira aquí .
fuente
JavaScript (ES6), 39 bytes
Utiliza el siguiente mapeo:
Toma entrada como
(x)(y)
.Pruébalo en línea!
JavaScript (ES6), 20 bytes
Usando el formato de E / S de Jonathan Frech :
Pruébalo en línea!
fuente
Python 2 ,
272623 bytesPruébalo en línea! Editar: Guardado 3 bytes gracias a @NieDzejkob. Utiliza el siguiente mapeo:
fuente
x*-1
... tengox*(-1**y)
(-1)**y
. Oh, bueno, eso todavía es 1 byte más corto ...(-1)
con 5 por -3 bytes.APL (Dyalog Classic) , 3 bytes
Pruébalo en línea!
+.×
es la multiplicación de matricesrepresentamos al grupo como
fuente
K (ngn / k) , 1 byte
Pruébalo en línea!
x@y
es la indexación de listas, que es lo mismo que la composición de permutaciones; representamos al grupo comofuente
Japt , 2 bytes
Utiliza el formato de E / S de Jonathan .
Pruébalo en línea
fuente
JavaScript (Node.js) ,
2419 bytesPruébalo en línea! Editar: se guardaron 2 bytes cambiando
**
y 3 bytes gracias a @NieDzejkob. Utiliza el siguiente mapeo:La versión anterior de 24 bytes también funciona en versiones antiguas de JavaScript:
fuente
Raqueta , 42 bytes
Pruébalo en línea!
Un puerto aburrido de la respuesta Python de Neil. Utiliza el mismo formato de E / S, por lo tanto:
fuente
05AB1E , 1 byte
Puerto de la respuesta Jelly de @JonathanAllan , pero con índices basados en 0, por lo que las representaciones son:
Pruébelo en línea o verificar todas las combinaciones posibles o verificar toda la vuelta asignada a los identificadores .
Explicación:
fuente
Wolfram Language (Mathematica) , 16 bytes
Pruébalo en línea!
Otro puerto aburrido de la respuesta de Neil, esta vez en Mathematica. Es una función anónima que toma argumentos en el orden
[y, x]
.Aquí está la representación de entrada:
fuente