Herausforderung
Bei einer Eingabe einer ganzen Zahl (wobei ) wird der Graph von von bis einschließlich ausgegeben.
Wobei der Realteil der komplexen Zahl .
Beachten Sie, dass
Ausgabe
Die Ausgabe kann in einer beliebigen Form erfolgen (z. B. ein Bild oder ein Fenster usw.). ASCII-Kunst ist nicht erlaubt.
Das Diagramm muss keine Achsen haben (damit Sprachen ohne integrierte Grafikfunktionen miteinander konkurrieren können).
Wenn ein Bild ausgegeben wird, muss jede Seite länger als 500 Pixel sein. Ebenso muss der Plot das Bild so gut wie möglich ausfüllen.
Das Mindestintervall zwischen den Darstellungen beträgt 0,05.
Vektorgrafiken sind erlaubt.
Beispiele
Für eine Eingabe von 2
:
Für eine Eingabe von 1
:
Sie müssen Ihre entsprechenden Ausgaben in Ihre Antwort eintragen (n = 1 und n = 2).
Gewinnen
Der kürzeste Code in Bytes gewinnt.
quelle
ASCII art is disallowed.
(ಥ﹏ಥ)Antworten:
MATL,
22 1816 BytesDanke @LuisMendo für zusätzliche -2 Bytes!
Probieren Sie es auf matl.suever.net
quelle
TI-Basic Früher
2621 BytesAusgabe für N = 2:
quelle
Bash + Gnuplot,
5645 Bytes(-11 Bytes dank Noiralef!)
Speichert das resultierende Diagramm als
png
BildA
im aktuellen Arbeitsverzeichnis.Beispielausgaben
Für n = 1 :
Für n = 2 :
quelle
gnuplot -e "se t png;p[-3:3]real((-2)**x)">A
Python 3 mit Matplotlib ,
10372 Bytes-12 Bytes durch DSM (ein Modul neben installiert wird
matplotlib
aufgerufenpylab
mit der notwendigen Funktionalität „ zu machen Python in einem ers mehr wie Matlab“ - seltsam, aber wahr)-18 mehr als Ergebnis (pylab hat viele numpy Funktionen auch!)
- 1 Byte dank Ajasja (Ersetzen
arange(-60,61)/20+0j
durcharange(121)/20-3+0j
)n = 2,1
quelle
from matplotlib.pyplot import*
wenn Sie ipython mit dem Flag --pylab --matplotlib starten?%pylab
gibt dir auch eine Nummer und wenn du in einem Notizbuch bist, brauchst du am Ende keine Show :)Mathematica, 41 Bytes
Die Ausgabe sieht genauso aus wie in der Challenge gezeigt, außer der Schriftart der Zahlen (die vermutlich mit Wolfram Alpha erstellt wurde).
quelle
MATLAB,
35-30BytesDies definiert eine beliebige Funktion. Die Ausgabe erfolgt über ein neues Fenster mit einer skalierbaren Vektorgrafikausgabe. MATLAB
plot
ignoriert automatisch den Imaginärteil der y-Koordinaten, solange Sie die entsprechenden x-Koordinaten angebenn=3
. Die folgende Ausgabe ist für .quelle
R, 30 Bytes
n
= 1n
= 2quelle
x=seq(-3,3,.05);plot(x,Re((0i-n)^x))
R 29 Bytes
n
wird über stdin bereitgestellt. Ergebnis für n = 1:Und für n = 2:
quelle
n
wie die anderen Antworten verwenden und fünf Zeichen von Ihrer Antwort streichen? Wie auch immer, verrückte Antwort. Ich vergesse immercurve
.n
. Die Antworten matlab, matl, TI-Basic und mathematica werden als stdin eingegeben (soweit ich sie verstehe), während die Antworten python und VBA eine Funktion erstellen. Auch wenn es erlaubt ist, ist es nur eine Frage des persönlichen Geschmacks: Ich mag es einfach nicht, Variablen als Eingabemethode vorab zu definieren.Excel VBA,
168160147138 Bytes (Zellen als Pixel im 100-fachen Maßstab)8 Bytes dank KyleKanos gespeichert 22 Bytes dank Taylor Scott gespeichert
Formatiert sieht es so aus:
Fun Fact: VBA nicht a-in gebaut hat
pi
variabel , so dass wir sie als Tabellenfunktion zu bewerten, wo es tut exist.n = 1 n = 2
Ich habe mit einer Chart-Version von 193 Bytes begonnen, aber es hat zu schöneren Ergebnissen geführt.
n = 1 n = 2
quelle
(-n)^x
anstatt Pi fest zu codieren?atn(1)*4
für Pi zu verwenden?MATLAB,
3533 BytesVielen Dank an @flawr für das Entfernen von 2 Bytes!
Dies definiert eine anonyme Funktion. Um es mit der Eingabe aufzurufen
2
, verwenden Sieans(2)
(oder weisen Sie die Funktion einer Variablen zu, z. B.f
und verwenden Sie dannf(2)
).Die Ausgabe erfolgt über Vektorgrafiken (Fenstergröße ändern). Das Abtastintervall auf der x- Achse wird von der
ezplot
Funktion automatisch bestimmt , scheint aber mehr als ausreichend zu sein.In STDERR wird eine Warnung ausgegeben, da die an
ezplot
(@(x)real((-n)^x)
) übergebene Funktion nicht vektorisiert ist, sondern der Graph generiert wird.Beispiel für
n = 2
:quelle
ezplot = la-z-plot
: D (Ich vergesse immer wieder über dieses ...)ezplot
so weitergeben kann. Leider kann das nicht gesagt werdenfplot
, so dass dort kein Byte gespeichert werden kann.Jupyter-Notizbuch und Python 3; 53 Bytes
Drei Bytes gespart dank @Jonathan Allan.
quelle
x=arange(-60,61)/20
die von DSM hervorgehobenen Probleme zu einem Preis von 2 Byte beheben. Wenn Sie hinzufügen0j
,arange
kann es verwendet werden, um zuplot(x,(-n)**x)
Speichern 4 zu wechseln.arange(121)
!Gekapseltes PostScript; 232 Bytes
Nun, da dies ein Vektorbild selbst ist ...
quelle
TikZ + PGFPlots , 175 Byte
Kompilieren mit, zum Beispiel ,
latexmk -cd -f -pdf in.tex
für eine PDF - Ausgabe. Während der Kompilierung wird der Benutzer dazu aufgefordertn
.Beispielausgaben (in png konvertiert) für n = 1 und n = 2:
quelle
Math.JS Grapher , 20 Bytes
Zufällig ist dieses Grafikdienstprogramm TC (Infinite-Loops stürzen es zum größten Teil einfach ab.), Und von Natur aus ist es die primäre Ausgabe von Grafiken.
Wie es funktioniert
r(n)=
Weist dem Ausdruck eine Funktion zu,r
die das Argument übernimmt . Buchstabe für Buchstabe ist so ziemlich die Herausforderungsbeschreibung. Dies weist aber die Funktion zun
f(x)=re((-n)^x)
re((-n)^x)
f(x)
zu, die der Grapher implizit als Liniendiagramm ausgibt.Wie man es testet
Sie können diese Site verwenden, die Funktion dort eingeben und sie dann mit aufrufen
r(input)
.Ausgabe
quelle
J ,
37-36BytesVielen Dank an meinen Kollegen Marshall für die Anleitung. -2 danke an FrownyFrog.
Anonyme implizite Präfixfunktion.
quelle
20%~i:@60
kann seini:@3j120
.Dyalog APL, 41 Bytes
Wie es funktioniert:
Der Benutzer Befehl
]chart
, in diesem Fall nimmt zwei Vektor Argumente,x
und any
und zeichnet die Kurven:quelle
SmileBASIC, 82 Bytes
Die Grafik füllt den gesamten Bildschirm aus, auch wenn N kleiner als 1 ist.
Wenn N größer als 1 ist, können Sie Y durch Teilen durch auf einen Wert zwischen -1 und 1 skalieren
n^3
. Das mache ich schonn^x
undn^x / n^3
kann damit vereinfacht werdenn^(x-3)
. Wenn jedoch N kleiner als 1 ist, muss ichn^-3
stattdessen Y durch dividieren . Dies ist äquivalent zun^(x+3)
.Ich kann verwenden, um
n^(x-3*sign(n-1))
zu verwenden,-3
wennn>1
und+3
wennn<1
Bilder folgen in Kürze
quelle
Excel VBA, 133 Bytes
Direktes Fensterskript, das Eingaben von
[A1]
einemChart
Objekt aufnimmt und an dieses ausgibtSheet1
.Ungolfed
Vollversion der
Sub
Routine. I / O ist unverändert.Ausgabe
Wo Eingang,n = 1
Wo Eingang,n = 3
quelle
Julia 0.6 mit Plots.jl, 46 Bytes
Das brauchte eine Julia-Vertretung!
Hier gibt es allerdings nicht viel zu golfen, außer (ab) das Überladen von Operatoren, um Bytes bei der Funktionsdefinition zu sparen, und das Verwenden
0im-n
, um die Eingabenummer komplex zu machen, wo ich sie normalerweise verwendet habeComplex(n)
. Das ist notwendig , weil in Julia, für Typ Stabilitätsgründen der^
Bediener komplexe Ergebnisse liefert nur dann, wenn der Eingang Komplex selbst. Hier machen wir es also zu einer komplexen Zahl, indem wir0im
ie hinzufügen . 0i.Eine coole Sache am Plots.jl-Paket ist, dass es automatisch das zu verwendende Backend auswählt, basierend darauf, welche Plot-Pakete Sie installiert haben und von wo aus Sie den
plot
Befehl ausführen . Das obige Diagramm wurde mit dem GR- Backend erstellt, aber wenn ich das nicht installiert hätte (oder wenn ich explizit einenplotly()
Befehl ausgeführt hätte, wie ich es getan habe), hätte es das interaktivere Plotly-Backend verwendet und diesen ausgegeben (der sieht aus wie ein winzig bisschen netter IMO):Es gibt sogar ein UnicodePlots- Backend, um ein Diagramm im Terminal zu drucken (oder in einer Textdatei zu speichern), wobei Unicode-Zeichen und Farbcodes verwendet werden. SE bringt die Ausrichtung der Handlung durcheinander, wenn ich versuche, sie direkt einzufügen. Hier ist also ein Terminal-Screenshot:
PS: Die alternative Formel,R e ( ( - n )x) = nxc o s ( π x ) , kommt auf die gleiche Länge heraus:
quelle