Dejar z
ser un número complejo. z
es una enésima raíz primitiva de la unidad si es para un número entero positivo n
y para cualquier número entero positivo k < n
.
Desafío
Escriba un programa completo o una función que, dado un entero positivo n
como entrada, produzca todas las enésimas raíces primitivas de la unidad. Puede generarlos en forma polar ( e^θi
o e^iθ
, el argumento debe ser un decimal con al menos 2 lugares decimales) o una forma rectangular ( a + bi
o una forma similar, las partes reales e imaginarias también deben ser decimales), y pueden aparecer en la lista de su idioma / formato de matriz o como una cadena con los números separados por espacios o líneas nuevas. Las incorporaciones que calculan las enésimas raíces de la unidad o las enésimas raíces primitivas de la unidad no están permitidas.
Este es el código de golf , por lo que gana el código más corto en bytes.
Entradas y salidas de muestra
6 -> e^1.05i, e^-1.05i # polar form
3 -> e^2.094395i, e^-2.094395i # any number of decimal places is OK as long as there are more than 2
8 -> 0.707 + 0.707i, 0.707 - 0.707i, -0.707 + 0.707i, -0.707 - 0.707i # rectangular form
1 -> 1 + 0i # this is OK
1 -> 1 # this is also OK
4 -> 0 + i, 0 - i # this is OK
4 -> i, -i # this is also OK
fuente
Respuestas:
Jalea,
119 bytes¡Gracias a @Dennis por -2 bytes!
Quería generar los números coprimos a N doblando la diferencia de conjunto sobre todas las raíces de la unidad de 1 a N, pero no pude entender cómo utilicé el método de @ Dennis.
Pruébalo aquí. Válido en esta versión de Jelly, pero puede no estar disponible en versiones posteriores al 1 de febrero de 2016.fuente
Jalea , 14 bytes
Pruébalo en línea!
Cómo funciona
z = e 2tπi es un n º raíz de 1 si y sólo si t = k / n para algún entero k .
z es primitivo si y sólo si k y n son primos entre sí.
fuente
Julia, 48 bytes
Esta es una función lambda que acepta un número entero y devuelve una matriz de flotadores complejos. Para llamarlo, asígnelo a una variable. Utiliza el mismo enfoque que la respuesta de Dennis 'Jelly.
Sin golf:
fuente
Ruby, 46 bytes
Esta es una implementación que no es "lenguaje de golf" de la respuesta Jelly de Thomas Kwa .
Sin golf:
fuente
MATL , 27 bytes
Utiliza la versión (9.3.1) , que es anterior a este desafío.
Pruébalo en línea!
(El compilador en línea utiliza una versión más reciente, pero el código se ejecuta en la versión 9.3.1 y da el mismo resultado)
Explicación
Hay tres pasos principales:
0
,1
, ...,N-1
, correspondientes a todas las raíces.N
.Código:
fuente
Matlab 49 bytes
No obtuve la tarea la primera vez, pero ahora aquí está. Salidas de la siguiente manera:
fuente
ES6, 96 bytes
La forma polar fue la salida más corta.
fuente
PARI / GP, 41 bytes
Bastante sencillo: encuentre los números del 1 al n que son coprimos a n, luego
Tiene que haber un camino más corto, pero esto fue lo mejor que pude encontrar.
fuente