Einführung
Sie können Ihren normalen Einheitskreis kennen und lieben. Aber Mathematiker sind verrückt und haben das Konzept so weit abstrahiert, dass es befriedigt x*x+y*y=1
. Da Kryptographen 1 auch komisch sind, lieben sie endliche Felder und manchmal endliche Ringe (es ist jedoch nicht so, als hätten sie eine große Auswahl), also kombinieren wir dies!
Die Herausforderung
Eingang
Eine positive ganze Zahl größer als eine in Ihrer Lieblingskodierung. Nennen wir diese Nummer n.
Ausgabe
Sie geben das "Bild" (das aus n mal n Zeichen besteht) des Einheitskreises aus, indem Sie die eingegebene Ganzzahl als ASCII-Art mit "X" (lateinisches Großbuchstaben X) und "" (ein Leerzeichen) modulieren. Leerzeichen und Zeilenumbrüche sind erlaubt.
Mehr Details
Sie müssen ein Koordinatensystem von links unten nach rechts oben überspannen. Wenn ein Punkt die Kreisgleichung erfüllt, platzieren Sie ein X an der Position, andernfalls platzieren Sie ein Leerzeichen.
Die Bedingung für einen Punkt ein Teil der Kreisgrenze betrachtet werden soll:
mod(x*x+y*y,n)==1
.
Hier eine kurze Darstellung des Koordinatensystems:
(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)
Wenn es Ihnen hilft, können Sie auch die Richtung einer der Achsen umkehren, aber die Beispiele nehmen diese Ausrichtung an.
Wer gewinnt?
Das ist Code-Golf, also gewinnt der kürzeste Code in Byte! Es sind nur die Standard-E / A-Methoden zulässig, und alle Standardlücken sind gesperrt.
Beispiele
Eingabe: 2
X
X
Eingabe: 3
X
X
XX
Eingabe: 5
X
X
X X
Eingabe: 7
X
X X
X X
X
X X
Eingabe: 11
X
XX
X X
X X
XX
X
X X
Eingabe: 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 Ich schlage vor, Sie werfen einen Blick auf mein Profil, wenn Sie sich hier wundern.
Antworten:
Bash + GNU Utilities, 59
Eingabe
n
als Befehlszeilenparameter. Die y-Achse ist invertiert.Probieren Sie es online aus .
quelle
Oktave ,
4544 BytesProbieren Sie es online!
quelle
@(n)[(mod((x=(0:n-1).^2)+x',n)==1)*88,'']
. In bestimmten Systemen behandelt Octave Zeichen0
als LeerzeichenHaskell , 68 Bytes
Probieren Sie es online! Die y-Achse ist gespiegelt. Verwendung:
f 42
Gibt eine durch Zeilenumbrüche getrennte Zeichenfolge zurück.Dies ist eine verschachtelte Liste Verständnis , wo beide
x
undy
sind aus dem Bereich gezogen[0..n-1]
.last$' ':['X'|mod(x*x+y*y)n==1]
ist eine kürzere Form vonif mod(x*x+y*y)n==1 then 'X' else ' '
. Das Listenverständnis wird zu einer Liste von Zeichenfolgen ausgewertet, die in eine einzelne, durch eine neue Zeile getrennte Zeichenfolge umgewandelt wirdunlines
.quelle
Mathematica,
5648 BytesEdit: Danke an Greg Martin und Martin Ender für das Speichern von 8 Bytes.
Ursprüngliche Lösung:
quelle
X
:)Array
undNorm
:Grid@Array[If[Mod[Norm@{##}^2,x]==1,X]&,{x=#,#},0]&
#^2+#2^2
ist am kürzesten.If
wederTrue
oder istFalse
, benötigen Sie das vierte Argument oder es bleibt unbewertet,If[False,_]
kehrt aber zurückNull
. Seltsam.Array
, aber nicht daran gedacht, das Argument auf eine Variable zu setzen.CJam , 23 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6), 81 Byte
Die Y-Achse ist die Umkehrung des OP.
quelle
Röda , 74 Bytes
Probieren Sie es online!
Ungolfed:
quelle
Python 3 ,
8783 BytesProbieren Sie es online!
Die y-Achse ist invertiert
quelle
Jelly ,
1413 BytesDie x-Achse ist invertiert.
Probieren Sie es online!
Wie es funktioniert
quelle
Gleichstrom , 79 Bytes
Die
y
-Achse ist invertiert, diex
-Achse nicht.Probieren Sie es online!
quelle
MATL , 13 Bytes
Der Ursprung ist oben links. Die Ausgabe wird also im Vergleich zu den Beispielen in der Challenge auf den Kopf gestellt.
Probiere es bei MATL online aus!
Erläuterung
quelle
Python 3 (
1029895 Byte)y-Achse invertiert
Probieren Sie es online!
quelle
p(end=' 'if(i*i+j*j)%n-1else'X')
für 95 BytesLithp , 125 Bytes
Zeilenumbruch zur besseren Lesbarkeit.
Probieren Sie es online!
Nicht die kürzeste. Ich glaube, ich brauche eine Art Shorthand-Modul. Weitere Erklärungen, die ungolfed Version und einige Tests finden Sie unter dem Link Online testen. Erweitern Sie für optimale Ergebnisse das Ausgabefenster, um mehr zu sehen.
quelle
Python 3 , 82 Bytes
Probieren Sie es online!
quelle
GNU APL , 41 Zeichen, 59 Bytes
Liest eine Ganzzahl und zeigt den Kreis an.
Ungolfed
quelle
Haskell, 115 Bytes
Die y-Achse ist invertiert.
Probieren Sie es online!
All diese Klammern nerven mich irgendwie ...
Erläuterung
quelle
map
durch einen ersetzen<$>
, oder?J , 20 Bytes
Probieren Sie es online!
quelle
GolfScript , 34 Bytes
Probieren Sie es online!
Ich mag es wirklich nicht, Variablen zu benutzen ...
quelle