Soit z
un nombre complexe. z
est une nième racine primitive d'unité si pour un certain entier positif n
et pour tout entier positif k < n
.
Défi
Écrivez un programme ou une fonction complète qui, étant donné un entier positif n
en entrée, génère toutes les nièmes racines primitives de l'unité. Vous pouvez les afficher sous forme polaire ( e^θi
ou e^iθ
, l'argument doit être une décimale avec au moins 2 décimales) ou rectangulaire ( a + bi
ou une forme similaire, les parties réelles et imaginaires doivent également être des décimales), et elles peuvent être sorties dans la liste de votre langue / format tableau ou sous forme de chaîne avec les nombres séparés par des espaces ou des retours à la ligne. Les éléments intégrés qui calculent les nièmes racines de l'unité ou les nièmes racines primitives de l'unité ne sont pas autorisés.
C'est le code-golf , donc le code le plus court en octets l'emporte.
Exemples d'entrées et de sorties
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
la source
Réponses:
Gelée,
119 octetsMerci à @Dennis pour -2 octets!
Je voulais générer les nombres coprimes en N en repliant la différence d'ensemble sur toutes les racines de l'unité de 1 à N, mais je ne pouvais pas comprendre comment j'ai donc utilisé la méthode de @ Dennis.
Essayez-le ici. Valide dans cette version de Jelly, mais peut-être pas dans les versions après le 1er février 2016.la source
Gelée , 14 octets
Essayez-le en ligne!
Comment ça fonctionne
z = e 2tπi est un n ième racine de 1 si et seulement si t = k / n pour un entier k .
z est primitif si et seulement si k et n sont des nombres premiers.
la source
Julia, 48 octets
Il s'agit d'une fonction lambda qui accepte un entier et renvoie un tableau de flottants complexes. Pour l'appeler, affectez-le à une variable. Il utilise la même approche que la réponse Jelly de Dennis.
Non golfé:
la source
Rubis, 46 octets
Il s'agit d'une implémentation non "en langage golfique" de la réponse Jelly de Thomas Kwa .
Non golfé:
la source
MATL , 27 octets
Utilise la version (9.3.1) , qui est antérieure à ce défi.
Essayez-le en ligne!
(Le compilateur en ligne utilise une version plus récente, mais le code s'exécute dans la version 9.3.1 et donne le même résultat)
Explication
Il y a trois étapes principales:
0
,1
...,N-1
correspondant à toutes les racines.N
.Code:
la source
Matlab 49 octets
N'a pas eu la tâche à la première fois, mais maintenant la voici. Sorties comme suit:
la source
ES6, 96 octets
La forme polaire était la sortie la plus courte.
la source
PARI / GP, 41 octets
Assez simple: trouvez les nombres de 1 à n qui sont des nombres premiers à n, puis
Il doit y avoir un moyen plus court, mais c'était le meilleur que j'ai pu trouver.
la source