introduction
Vous connaissez peut-être et aimez votre cercle d'unité normal. Mais les mathématiciens sont fous et ont donc résumé le concept à tout point qui satisfait x*x+y*y=1
. Parce que les cryptographes 1 sont également étranges, ils aiment les champs finis et parfois les anneaux finis (ce n'est pas comme s'ils avaient beaucoup de choix), alors combinons cela!
Le défi
Contribution
Un entier positif supérieur à un dans votre encodage préféré. Appelons ce numéro n.
Production
Vous afficherez l '"image" (qui se compose de n fois n caractères) du cercle unitaire modulo l'entier d'entrée en ASCII-Art en utilisant "X" (X majuscule latin) et "" (un espace). Les espaces de fin et les nouvelles lignes sont autorisés.
Plus de détails
Vous devez étendre un système de coordonnées de bas à gauche à haut à droite. Chaque fois qu'un point remplit l'équation du cercle, placez un X à la position, sinon placez un espace.
La condition d'un point à considérer comme faisant partie de la frontière du cercle est:
mod(x*x+y*y,n)==1
.
Voici une illustration rapide du système de coordonnées:
(0,4)(1,4)(2,4)(3,4)(4,4)
(0,3)(1,3)(2,3)(3,3)(4,3)
(0,2)(1,2)(2,2)(3,2)(4,2)
(0,1)(1,1)(2,1)(3,1)(4,1)
(0,0)(1,0)(2,0)(3,0)(4,0)
Si cela vous aide, vous pouvez également inverser la direction de l'un des axes, mais les exemples supposent cette orientation.
Qui gagne?
C'est le code-golf donc le code le plus court en octets gagne! Seules les méthodes d'E / S par défaut sont autorisées et toutes les failles standard sont interdites.
Exemples
Entrée: 2
X
X
Entrée: 3
X
X
XX
Entrée: 5
X
X
X X
Entrée: 7
X
X X
X X
X
X X
Entrée: 11
X
XX
X X
X X
XX
X
X X
Entrée: 42
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
X
X X
X X
X X
X X
X
X X X X
X X X X
X
X X
X X
X X
X X
X
X X X X
1 Je vous suggère de jeter un œil à mon profil si vous vous posez la question ici.
Réponses:
Utilitaires Bash + GNU, 59
Entrée
n
donnée comme paramètre de ligne de commande. L'axe des y est inversé.Essayez-le en ligne .
la source
Octave ,
4544 octetsEssayez-le en ligne!
la source
@(n)[(mod((x=(0:n-1).^2)+x',n)==1)*88,'']
. Dans certains systèmes, Octave traite le personnage0
comme un espaceHaskell , 68 octets
Essayez-le en ligne! L'axe des y est inversé. Utilisation:
f 42
renvoie une chaîne délimitée par une nouvelle ligne.Il s'agit d'une compréhension de liste imbriquée où les deux
x
ety
sont tirés de la plage[0..n-1]
.last$' ':['X'|mod(x*x+y*y)n==1]
est une forme plus courte deif mod(x*x+y*y)n==1 then 'X' else ' '
. La compréhension de la liste est évaluée en une liste de chaînes qui est transformée en une seule chaîne séparée par un saut de ligne parunlines
.la source
Mathematica,
5648 octetsEdit: Merci à Greg Martin et Martin Ender pour avoir économisé 8 octets.
Solution originale:
la source
X
:)Array
etNorm
:Grid@Array[If[Mod[Norm@{##}^2,x]==1,X]&,{x=#,#},0]&
#^2+#2^2
est le plus court.If
n'est niTrue
ouFalse
, vous avez besoin du quatrième argument ou il reste non évalué, maisIf[False,_]
revientNull
. Bizarre.Array
mais je ne pensais pas définir l'argument sur une variable.CJam , 23 octets
Essayez-le en ligne!
la source
JavaScript (ES6), 81 octets
L'axe des Y est l'inverse de l'OP.
la source
Röda , 74 octets
Essayez-le en ligne!
Non golfé:
la source
Python 3 ,
8783 octetsEssayez-le en ligne!
L'axe des y est inversé
la source
Gelée ,
1413 octetsL'axe des x est inversé.
Essayez-le en ligne!
Comment ça fonctionne
la source
dc , 79 octets
L'
y
axe est inversé tandis que lex
-axis ne l'est pas.Essayez-le en ligne!
la source
MATL , 13 octets
L'origine est en haut à gauche. La sortie est donc inversée par rapport aux exemples du défi.
Essayez MATL en ligne!
Explication
la source
Python 3 , (
1029895 octets)axe y inversé
Essayez-le en ligne!
la source
p(end=' 'if(i*i+j*j)%n-1else'X')
pour 95 octetsLithp , 125 octets
Saut de ligne pour la lisibilité.
Essayez-le en ligne!
Pas le plus court. Je pense que j'ai besoin d'une sorte de module raccourci. Voir le lien Try it Online pour plus d'explications, une version non golfée et quelques tests. Pour de meilleurs résultats, développez la fenêtre de sortie pour en voir plus.
la source
Python 3 , 82 octets
Essayez-le en ligne!
la source
GNU APL , 41 caractères, 59 octets
Lit un entier et affiche le cercle.
Non golfé
la source
Haskell, 115 octets
L'axe y est inversé.
Essayez-le en ligne!
Toutes ces parenthèses me gênent un peu ...
Explication
la source
map
par un<$>
, non?J , 20 octets
Essayez-le en ligne!
la source
GolfScript , 34 octets
Essayez-le en ligne!
Je n'aime vraiment pas utiliser des variables ...
la source