Ihre Herausforderung besteht darin, eines der folgenden Herzen zu zeichnen / zu zeichnen. Die Größe muss mindestens 50x50 Pixel betragen (Vektorgrafiken sind in Ordnung). Sie können wählen, welches der Herzen Sie zeichnen / plotten möchten. Achsen, Gitterlinien usw. werden akzeptiert. Es müssen mindestens 100 verschiedene Koordinaten / Punkte in der Grafik vorhanden sein. Das Herz kann mit Farbe gefüllt werden, wenn Sie möchten.
Die Gleichungen sind entweder:
oder
t
ist im Bereich [-1, 1]
.
oder
oder
Dies ist Code-Golf, so dass der kürzeste Code (in jeder Sprache) in Bytes gewinnt. Bitte geben Sie die Ausgabe an (oder verlinken Sie zu einem Online-Dolmetscher).
quelle
IF (X²+ANS²-1)³-X²ANS³<0
mitIF (X²+ANS²-1)³<X²ANS³
?Perl, 86 Bytes
Laufen Sie mit
perl -E
.Zeichnet ein gefülltes ASCII-Herz unter Verwendung der ersten Gleichung. Beachten Sie, dass die x-Achse um einen Faktor von ~ 1,265 gedehnt ist. Dies soll der Tatsache entgegenwirken, dass Terminal-Schriftarten in der Regel vertikal viel größer als horizontal sind.
Ausgabe:
Erklärung (seit OP darum gebeten hat):
Dies ist einfach die erste Gleichung, die leicht neu angeordnet wurde, um sie kürzer zu machen. $ y steht direkt für das y in der Formel. $ _ ist anfangs proportional zu x, wird aber mit sich selbst multipliziert (
$_*=$_/1e3
), was es proportional zu x² macht. Da x² in der Formel zweimal verwendet wird, werden dadurch einige Bytes eingespart.1e3
bedeutet 1000 und wurde ausgewählt, weil es kurz ist und das Ergebnis gut aussieht.**
ist Perls Netzbetreiber. Ich benutze>0
eher als==0
weil ich ein erfülltes Herz haben will.v60 ist ein Missbrauch der Syntax der archaischen Versionszeichenfolge, um das Zeichen mit dem ASCII-Code 60 zu kennzeichnen: '<'.
$ | ist eine magische Variable, die immer nur 0 oder 1 sein kann. Wird sie dekrementiert, wenn sie bereits 0 ist, wird sie auf 1 gesetzt. Wird sie dekrementiert, wenn sie 1 ist, wird sie natürlich auf 0 gesetzt. Daher wird $ | - oft als Flip-Flop verwendet: jedes Mal es wird ausgewertet, es wechselt zwischen wahr und falsch.
Insgesamt gibt dieser Ausdruck alternativ '<' und 3 zurück.
Verschachtelte Ternaries. Wenn die Bedingung falsch ist (→ wir befinden uns außerhalb des Herzens), wird $ "ausgewertet. Dies ist eine magische Variable, die standardmäßig" "(ein einzelnes Leerzeichen) ist. Wenn die Bedingung wahr ist (→ wir befinden uns innerhalb des Herzens), wird sie ausgewertet wertet flip_flop aus.
Wertet inner_loop wiederholt aus, wobei $ _ (Perls "Standard" -Variable) in Schritten von 1 zwischen -40 und 40 liegt. Es sammelt die Ergebnisse dieser Auswertung in einer temporären Liste und druckt sie dann alle verkettet aus und endet mit einer neuen Zeile .
Dies führt Outer_loop wiederholt aus, wobei $ y in Schritten von 0,04 von 1,24 (1 - (-6 / 25)) auf -1 (1 - 50/25) geht.
Beachten Sie, dass y durch 25 geteilt wird, während x² durch 1000 geteilt wird, was dem Teilen von x durch sqrt (1000) entspricht. Der erwähnte Faktor ~ 1.265 ist sqrt (1000) / 25.
quelle
MathematicaWolframAlpha,17151311 Bytes2 Bytes gespart dank Martin Ender (1. Herzkurve -> Herzkurve 1)
Weitere 2 Bytes dank Martin Ender eingespart (Herzkurve 1 -> Herzkurve1)
Dies ist wahrscheinlich Betrug (die offensichtliche Lösung), aber hier geht.
Probieren Sie es hier aus!
Ich bin mir sicher, dass es eine Möglichkeit gibt, 1st, Heart oder Curve so zu verkürzen, dass Wolfram sie weiterhin akzeptiert.Nun, es ist jetzt frei von Leerzeichen, vielleicht eine Abkürzung für Herz?Bekomme ich Bonuspunkte für 2 davon?
Versuchen Sie das hier!
quelle
heart curve 1
heartcurve1
klappt.Mathematica, 52 Bytes
Wir könnten ein weiteres Byte mit speichern,
ContourPlot
aber dann wird der Hintergrund ein bisschen trippy:Für ein zusätzliches Byte könnten wir die vierte Formel verwenden und
PolarPlot
stattdessen:quelle
Casio FX-7700GH, 21 Byte
Unbenannte Graphikfunktion, die in einen der Slots für die Graphikfunktion für Polarkoordinaten eingegeben werden kann, und dann das tut, was es verspricht.
Der Grafikbereich muss manuell eingestellt werden (es sei denn, er passt zum aktuell eingestellten Bereich)
Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1
.Sollte auch mit anderen Taschenrechnern der Casio Power Graphic-Serie und möglicherweise auch mit späteren Casio-Taschenrechnern funktionieren.
(Ja,
ich binziemlich alt und staubig)quelle
MATLAB / Octave, 31 Bytes
quelle
SmileBASIC,
8581 Bytesquelle
Desmos ,
20 1615 BytesV 2:
(=
xx)^.3y=xx+yy-1
)V 1:
V 0:
quelle
xx
anstelle vonx^2
MATL, 36 Bytes
Probieren Sie es bei MATL Online aus
quelle
Python,
119116 BytesProbieren Sie es online aus
quelle
SageMath, 66 Bytes
Probieren Sie es online aus
Leider sind die ersten drei Optionen aufgrund der langen Namen von
implicit_plot
undparametric_plot
(und der Notwendigkeit, eine andere als die implizitx
für erstere definierte Variable zu definieren ) viel zu lang, um berücksichtigt zu werden.Vielen Dank an busukxuan und Andrea Lazzarotto für ein Byte
quelle
^.5
anstelle von**.5
?^
ist XOR.^
mit**
. Ich fragte mich, ob es daran lag, dass es nicht richtig ersetzen konnte, wenn ein.
**
). Wenn Sie versuchen zu verwenden^
, erhalten Sie eine Warnung und ein falsches Ergebnis.C,
137133 Byteshttp://codepad.org/zqqYUui8
Danke @AlbertRenshaw, ich habe auch die 100er in 99er für 2 weitere Bytes geändert
quelle
v
für die Funktion, gutes Flair. Sie können zwei Bytes durch Ersetzen4000
durch4e3
und Ersetzen0.001
durch1e-3
Gelee , 31 Bytes
Probieren Sie es online!
oder 35 Bytes mit einem
♥
, anstatt zu*
füllen: Ändern Sie die mittlere Zeile in²+’*3<ç×9829Ọ»⁶
.Wie?
Implementiert: über ein durch 51 mal 51 Zeilen getrenntes Zeichenraster.
quelle
JavaScript (ES6),
151–147ByteBearbeiten: 4 Bytes dank @ user2428118 gespeichert. ES7-Version für 143 Bytes:
quelle
y**3
statty*y*y
?BBC BASIC, 80
Wird morgen mit dem Golfen fertig sein.
Laden Sie den Interpreter unter http://www.bbcbasic.co.uk/bbcwin/bbcwin.html herunter
Zeichnet ein gefülltes Herz mit der ersten Gleichung, die wir neu anordnen und die Kubikwurzel daraus ziehen (es gibt 3 Kubikwurzeln einer reellen Zahl, eine reelle und 2 komplexe, aber wir interessieren uns hier nur für die reelle Wurzel.) Dann ordnen wir erneut an ein Quadrat bekommen
y
Unter Verwendung der quadratischen Standardformel für Ausdrücke des Typs
ay^2+by+c=0
und unter Ausnutzung der Tatsache, dassa
= 1 erhalten wirwo
-b/2 = (x^0.66)/2
(vertreten durchb
im Programm.)Wir scannen einfach die Werte
x
von links nach rechts und zeichnen eine vertikale Linie zwischen jedem Paar gültiger Wertey
, um eine feste Form aufzubauen.ungolfed
quelle
Ruby, 80 Bytes
Zeigen Sie Ruby etwas Liebe.
Ausgabe:
mit einigen leeren Zeilen oben und unten
quelle
Processing.js:
123119 Bytesungolfed:
Golf gespielt:
Dieses ist ziemlich betrügerisch, da es Nr. 2 von 0 bis unendlich statt von -1 bis 1 darstellt, wie im Bild gezeigt, um die beiden Bauchmuskeln (t) zu schonen. Aber es ist technisch korrekt, da es mehr als 100 Punkte gibt.
130 Bytes "richtiger" eins
versuche es online
Hinweis: Es gibt wahrscheinlich eine Möglichkeit, 100 Punkte auf der Standardleinwand von 100 x 100 zu erhalten und das Setup zu deaktivieren.
quelle
float
stattint
TI-84 Basic,
4038 BytesÄhnlich wie bei der Antwort und Ausgabe von @ 12Me21, jedoch stattdessen für die Serie TI-83/84.
quelle
BBC BASIC (BBC Micro) (126 Byte)
Dies ist eine Variation der Antwort von Level River Street , aber für die ursprüngliche BBC Micro-Iteration von BBC BASIC.
Sie können eine der folgenden Optionen kopieren und in die neue Einfügefunktion von JSBeeb unter https://bbc.godbolt.org/ (Ein mit JavaScript betriebener BBC Micro-Emulator) einfügen. Drücken Sie nach dem Einfügen die Eingabetaste auf dem Bildschirm, um eine neue Funktion anzuzeigen Eingabeaufforderung, geben Sie RUN ein und drücken Sie die Eingabetaste, um eine der beiden Versionen auszuführen.
Golf gespielt. (126 Bytes)
ungolfed. (176 Bytes)
Zeile 7 erfordert eine Prüfung auf X, um einen "Log range" -Fehler zu verhindern, wenn X auf halbem Weg durch die Schleife zu 0 wird. Ansonsten ist es so ziemlich dasselbe. Es ist viel langsamer, auf einer echten Maschine zu zeichnen, die JSBeeb ziemlich gut emuliert.
quelle