Zeichnen / Zeichnen Sie ein Herzdiagramm

45

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.

Bildbeschreibung hier eingeben

Die Gleichungen sind entweder:

Bildbeschreibung hier eingeben

oder

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

tist im Bereich [-1, 1].

oder

Bildbeschreibung hier eingeben

oder

Bildbeschreibung hier eingeben

Dies ist 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).

Stewie Griffin
quelle

Antworten:

66

TI-80 BASIC, 45 43 41 39 Byte

LBL 1
RAND4-2->X
RAND4-2
IF (X²+ANS²-1)³<X²ANS³
PT-ON(X,ANS
GOTO 1

Bildbeschreibung hier eingeben

Dies hat eine Weile gedauert und meine Batterie ist schwach, sodass ich nicht mehr weitermachen wollte.

Ich habe versucht, die zweite Gleichung zu verwenden, konnte sie aber nicht zum Laufen bringen. Es stellte sich heraus, dass sie länger war. Deshalb habe ich nur die andere Antwort angepasst, die ich hatte.

BEARBEITEN: Ich habe gerade die 50x50 Pixel Anforderung bemerkt, leider ist der Bildschirm nur 47 Pixel hoch, so dass dies nicht möglich ist.

12Me21
quelle
1
in der Tat kreativ!
Dalearn
8
Es ist schon eine Weile, aber können Sie ersetzen IF (X²+ANS²-1)³-X²ANS³<0mit IF (X²+ANS²-1)³<X²ANS³?
Wchargin
Oh, ich kann nicht glauben, dass ich nicht daran gedacht habe! danke
12Me21
45

Perl, 86 Bytes

$y=1-$_/25,say+map$y**3*($_*=$_/1e3)-($_+$y**2-1)**3>0?$|--?v60:3:$",-40..40for-6..50

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:

                3<3<3<3<3<3<3<                   3<3<3<3<3<3<3<                 
              3<3<3<3<3<3<3<3<3<3<           3<3<3<3<3<3<3<3<3<3<               
            3<3<3<3<3<3<3<3<3<3<3<3<       3<3<3<3<3<3<3<3<3<3<3<3<             
          3<3<3<3<3<3<3<3<3<3<3<3<3<3<   3<3<3<3<3<3<3<3<3<3<3<3<3<3<           
         3<3<3<3<3<3<3<3<3<3<3<3<3<3<3< 3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<          
        3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3 <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<         
       3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3        
      <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<       
      3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3       
     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<      
     3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3      
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
   3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3    
   <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<    
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
    <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<     
    3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3     
     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<      
     3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3      
     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<      
      3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3       
      <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<       
       3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3        
       <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<        
        3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3         
         <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<          
         3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3          
          <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<           
           3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3            
            <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<             
             3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3              
              <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<               
               3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                
                <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                 
                 3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                  
                  <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                   
                   3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                    
                     <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                      
                      3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                       
                       <3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<3<                        
                         3<3<3<3<3<3<3<3<3<3<3<3<3<3<3                          
                           <3<3<3<3<3<3<3<3<3<3<3<3<                            
                            3<3<3<3<3<3<3<3<3<3<3<3                             
                              <3<3<3<3<3<3<3<3<3<                               
                                3<3<3<3<3<3<3<3                                 
                                  <3<3<3<3<3<                                   
                                    3<3<3<3                                     
                                     <3<3<                                      
                                       3                                        

Erklärung (seit OP darum gebeten hat):

condition := $y**3*($_*=$_/1e3)-($_+$y**2-1)**3>0

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.

1e3bedeutet 1000 und wurde ausgewählt, weil es kurz ist und das Ergebnis gut aussieht. ** ist Perls Netzbetreiber. Ich benutze >0eher als ==0weil ich ein erfülltes Herz haben will.

flip_flop := $|--?v60:3

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.

inner_loop := <condition> ? <flip_flop> :$"

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.

outer_loop := say+map <inner_loop> ,-40..40

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 .

$y=1-$_/25, <outer_loop> for-6..50

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.

Grimmig
quelle
5
Huh, ich denke, es verstößt nicht gegen irgendwelche Regeln ... Mein Favorit bisher :) Ich würde jedoch gerne eine Erklärung
Stewie Griffin
1
Ich bin über etwas verwirrt. Warum? V60 über, sagen Sie "<"?
Nic Hartley
Gleiche Länge, aber einfacher zu tippen.
Grimmy
Ein Herz aus Herzen.
TheWanderer
34

Mathematica WolframAlpha, 17 15 13 11 Bytes

2 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.

heartcurve1

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?

heartcurves

Versuchen Sie das hier!

Thunda
quelle
5
heart curve 1
Martin Ender
6
Eigentlich heartcurve1klappt.
Martin Ender
23
@ MartinEnder Was in aller Welt
Thunda
1
Die erste Herzkurve sieht allerdings eher aus wie ein Hintern
Mikhail V
@MikhailV 0. Herzkurve (Cardoid) sieht aus wie ein Hintern.
Thunda
29

Mathematica, 52 Bytes

RegionPlot[(x^2+y^2-1)^3-x^2y^3<0,{x,-2,2},{y,-2,2}]

Bildbeschreibung hier eingeben

Wir könnten ein weiteres Byte mit speichern, ContourPlotaber dann wird der Hintergrund ein bisschen trippy:

ContourPlot[(x^2+y^2-1)^3-x^2y^3,{x,-2,2},{y,-2,2}]

Bildbeschreibung hier eingeben

Für ein zusätzliches Byte könnten wir die vierte Formel verwenden und PolarPlotstattdessen:

PolarPlot[(x=Sin@t)Abs@Cos@t^.5/(x+7/5)-2x+2,{t,0,7}]

Bildbeschreibung hier eingeben

Martin Ender
quelle
23
"Ein bisschen trippy" ist ein bisschen untertrieben ...
Mego
ContourPlot löst so viel Zwangsstörung aus. Aaaaaah! : D
KeyWeeUsr
25

Casio FX-7700GH, 21 Byte

sin θ √ Abs cos θ ÷ ( sin θ + 7 ÷ 5 ) - 2 sin θ + 2

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.

Ein Herz, gezeichnet von einem Casio fx-7700GH Taschenrechner (Ja, ich bin ziemlich alt und staubig)

Jonathan Allan
quelle
18

MATLAB / Octave, 31 Bytes

ezplot('(x^2+y^2-1)^3-x^2*y^3')

Bildbeschreibung hier eingeben

Suever
quelle
9

SmileBASIC, 85 81 Bytes

X=RNDF()*4-2Y=RNDF()*4-2GPSET X*50+99,Y*50+99,-(-X*X*Y*Y*Y>POW(X*X+Y*Y-1,3))EXEC.

Bildbeschreibung hier eingeben

12Me21
quelle
9

Desmos , 20 16 15 Bytes

V 2:

xx) .3 y = xx + yy-1

(= xx)^.3y=xx+yy-1)

V 1:

xx + yy-1) 3 = xxy 3

V 0:

(x2+y2-1)3=x2y3
Daniel
quelle
Sie könnten xxanstelle vonx^2
12Me21
@ 12Me21, oh das ist großartig, danke!
Daniel
Ihre Byteanzahl ist falsch, Sie haben einen zusätzlichen Zeilenumbruch.
16.
@Riker, ich verstehe nicht, wie es falsch ist. Wo gibt es eine Newline?
Daniel
imgur.com/a/4eTyt V2 ist 14 Bytes
Rɪᴋᴇʀ
7

MATL, 36 Bytes

1e4t:w/EqXJX,JY,J|Yl**JX,X^J|.3^*&XG

Probieren Sie es bei MATL Online aus

Bildbeschreibung hier eingeben

Suever
quelle
9
Tfw MATL-Lösung ist länger als MATLAB :)
brainkz
7

Python, 119 116 Bytes

from turtle import*
from math import*
t=1
while-t<1:a=abs(t);c=cos(t);goto(sin(t)*c*log(a)*99,c**.5*a**.3*99);t-=.01

Probieren Sie es online aus

x = sin (t) * cos (t) * log (abs (t))

y = cos (t) **. 5 * abs (t) **. 3

mbomb007
quelle
6

SageMath, 66 Bytes

polar_plot(sin(x)*abs(cos(x))^.5/(sin(x)+7/5)-2*sin(x)+2,(0,2*pi))

Probieren Sie es online aus

Leider sind die ersten drei Optionen aufgrund der langen Namen von implicit_plotund parametric_plot(und der Notwendigkeit, eine andere als die implizit xfü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

Mego
quelle
1
Arbeitet ^.5anstelle von **.5?
busukxuan
1
@busukxuan Nein. Sage basiert auf Python und ^ist XOR.
Mego
1
Aber Salbei ersetzt ^mit **. Ich fragte mich, ob es daran lag, dass es nicht richtig ersetzen konnte, wenn ein.
busukxuan
@busukxuan Sage verwendet die Python-Notation ( **). Wenn Sie versuchen zu verwenden ^, erhalten Sie eine Warnung und ein falsches Ergebnis.
Mego
1
@AndreaLazzarotto Dann ist anscheinend mein Gedächtnis fehlerhaft. Vielen Dank.
Mego
6

C, 137 133 Bytes

p;float x,y,f;v(){for(p=4e3;p;x=(float)(p%99-50)/35,y=(float)(p/40-45)/40,f=x*x+y*y-1)putchar(p--%99?f*f*f-x*x*y*y*y<1e-3?35:32:10);}

http://codepad.org/zqqYUui8

Danke @AlbertRenshaw, ich habe auch die 100er in 99er für 2 weitere Bytes geändert

Ahemone
quelle
1
+1; Ich mag die Verwendung vfür die Funktion, gutes Flair. Sie können zwei Bytes durch Ersetzen 4000durch 4e3und Ersetzen 0.001durch1e-3
Albert Renshaw
6

Gelee , 31 Bytes

*3×
²+’*3<çị⁾* 
25µNr÷21µ²ç@þUY

Probieren Sie es online!

oder 35 Bytes mit einem , anstatt zu *füllen: Ändern Sie die mittlere Zeile in ²+’*3<ç×9829Ọ»⁶.

          ♥♥♥♥♥♥♥♥♥♥           ♥♥♥♥♥♥♥♥♥♥          
        ♥♥♥♥♥♥♥♥♥♥♥♥♥♥       ♥♥♥♥♥♥♥♥♥♥♥♥♥♥        
      ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥      
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
    ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥    
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥  
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
   ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥   
    ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥    
    ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥    
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
     ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥     
      ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥      
      ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥      
       ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥       
        ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥        
        ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥        
         ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥         
          ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥          
           ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥           
            ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥            
             ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥             
              ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥              
               ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥               
                 ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥                 
                  ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥                  
                   ♥♥♥♥♥♥♥♥♥♥♥♥♥                   
                     ♥♥♥♥♥♥♥♥♥                     
                      ♥♥♥♥♥♥♥                      
                        ♥♥♥                        
                         ♥                         

Wie?

Implementiert: Gleichungüber ein durch 51 mal 51 Zeilen getrenntes Zeichenraster.

*3× - Link 1: y, xSquared
*3  - cube y
  × - multiply the result by xSquared

²+’*3<çị⁾*  - Link 2: y, xSquared
²           - square y
 +          - add xSquared to the result
  ’         - subtract one
   *3       - cube the result
     <      - less than? (1 if True, 0 if False)
      ç     -     the result of the last link (1) as a dyad: f(y, xSquared)
       ị    - index into (1-based):
        ⁾*  - the string "* " (there is a trailing space on this line)

       ×9829Ọ»⁶ - alternative ending of link 2
       ×9829    - multiply (vectorises) by 9829
            Ọ   - cast to character (vectorises) (9829 is the ♥, 0 is the null-byte)
             »  - maximum (vectorises) of that and:
              ⁶ -     space character (ordinal of space is 32, greater than the null-byte, less than ♥)

25µNr÷21µ²ç@þUY - Main link: no arguments
25              - 25
  µ             - monadic chain separation call that i
   N            - negate i
    r           - inclusive range(negated i, i) -> [-25, -24, ..., 24, 25]
     ÷21        - divide by 21 (vectorises) -> [-1.1904761904761905, -1.1428571428571428, ..., 1.1428571428571428, 1.1904761904761905]
        µ       - monadic chain separation call that r
         ²      - square r (vectorises) (make the xSquared values, left to right)
             U  - upend r (make the y values, top to bottom)
            þ   - outer product using:
          ç@    -     last link (2) as a dyad with reversed arguments: f(y, xSquared)
              Y - join with line feeds
                - implicit print
Jonathan Allan
quelle
5

JavaScript (ES6), 151–147 Byte

document.write`<canvas id=c>`;for(i=0;x=2-i/24,i<97;i++)for(j=0;y=2-j/24,z=x*x+y*y-1,j<97;j++)z*z*z-x*x*y*y*y<0&&c.getContext`2d`.fillRect(i,j,1,1)

Bearbeiten: 4 Bytes dank @ user2428118 gespeichert. ES7-Version für 143 Bytes:

document.write`<canvas id=c>`;for(i=0;i<97;i++)for(x=2-i/24,j=0;j<97;j++)x*x*(y=2-j/24)**3-(x*x+y*y-1)**3>0&&c.getContext`2d`.fillRect(i,j,1,1)

Neil
quelle
wie wäre es y**3statt y*y*y?
svarog
1
@svarog Also mein Hinweis "Wäre in ES7 etwas kürzer" ...
Neil
Nun, es funktioniert auf Chrom 55, warum also nicht eine es7-Version hinzufügen?
Varog
1
@svarog Weil ich Chrom 55 nicht zur Hand habe ...
Neil
1
@ThisSuitIsBlackNot Es wurde über nicht deklarierte Variablen geklagt, als ich es versuchte.
Neil
4

BBC BASIC, 80

Wird morgen mit dem Golfen fertig sein.

Laden Sie den Interpreter unter http://www.bbcbasic.co.uk/bbcwin/bbcwin.html herunter

ORIGIN99,99F.u=-56TO56x=u/50b=x^2^.33/2r=(b^2-x^2+1)^.5*50L.u,b*50-r,u,r+b*50N.

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

x^2+y^2-1=(x^0.66)y

y^2-(x^0.66)y+x^2-1=0

Unter Verwendung der quadratischen Standardformel für Ausdrücke des Typs ay^2+by+c=0und unter Ausnutzung der Tatsache, dass a= 1 erhalten wir

y = -b/2 +/- sqrt((b/2)^2-c)

y = -b/2 +/- sqrt((b/2)^2-x^2+1)

wo -b/2 = (x^0.66)/2(vertreten durch bim Programm.)

Wir scannen einfach die Werte xvon links nach rechts und zeichnen eine vertikale Linie zwischen jedem Paar gültiger Werte y, um eine feste Form aufzubauen.

ORIGIN99,99F.u=-56TO56x=u/50b=x^2^.33/2r=(b^2-x^2+1)^.5*50L.u,b*50-r,u,r+b*50N.

ungolfed

ORIGIN99,99
FORu=-56TO56
  x=u/50
  b=x^2^.33/2
  r=(b^2-x^2+1)^.5*50
  LINEu,b*50+r,u,b*50-r
NEXT
Level River St
quelle
4

Ruby, 80 Bytes

Zeigen Sie Ruby etwas Liebe.

-2.step(2,0.2){|y|-2.step(2,0.1){|x|$><<'. O'[(y*y-1+x*=x)**3+x*y**3<=>0]};puts}

Ausgabe:

         OOOOO     OOOOO             
      .OOOOOOOOO.OOOOOOOOO.          
     OOOOOOOOOOOOOOOOOOOOOOO         
     OOOOOOOOOOOOOOOOOOOOOOO         
     OOOOOOOOOOOOOOOOOOOOOOO         
      OOOOOOOOOOOOOOOOOOOOO          
      .OOOOOOOOOOOOOOOOOOO.          
        OOOOOOOOOOOOOOOOO            
         OOOOOOOOOOOOOOO             
           OOOOOOOOOOO               
              OOOOO                  
                .                    

mit einigen leeren Zeilen oben und unten

GB
quelle
2

Processing.js: 123 119 Bytes

ungolfed:

t = 0; 

void setup() {
    size(99, 300); 
} 

void draw() {
    point(59+99*sin(t)*cos(t)*log(t),350-400*sqrt(cos(t))*pow(t,0.3));
    t+=0.01;
}

Golf gespielt:

t=0;void setup(){size(99,300);}void draw(){point(59+99*sin(t)*cos(t)*log(t),350-400*sqrt(cos(t))*pow(t,0.3));t+=0.01;}

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

t=-1;void setup(){size(99,300);}void draw(){point(59+99*sin(t)*cos(t)*log(abs(t)),350-400*sqrt(cos(t))*pow(abs(t),0.3));t+=0.01;}

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.

satibel
quelle
Keiner Ihrer Schnipsel tut etwas für mich in meiner lokalen Version von Processing (mit Ausnahme der zweiten, die nur 1 Punkt zieht)
Kritixi Lithos
Hast du es mit dem Skizzenblock versucht? ("online ausprobieren") Sie müssen auf "Skizze rendern" klicken
satibel
Aber ich denke, das würde stattdessen "Processing.JS" heißen. Damit das Snippet für mich funktioniert, müssen Sie floatstattint
Kritixi Lithos den
Hoppla, habe die .js vergessen und dank dessen habe ich 4 Bytes gespart, indem ich das nutzlose int entfernt habe.
Samstag,
2

TI-84 Basic, 40 38 Bytes

Ähnlich wie bei der Antwort und Ausgabe von @ 12Me21, jedoch stattdessen für die Serie TI-83/84.

While 1:2rand-1→A:2rand-1:If (A²+Ans²-1)³>A²Ans³:Pt-On(A,Ans:End
Timtech
quelle
Ist Ans hier eigentlich kleiner? Ich dachte, Ans wäre 2 Bytes.
12. Mai, 21.
@ 12Me21 Nein, es ist gleich groß und auch schneller. (Zumindest für TI-83/84 kenne ich TI-80 nicht).
Timtech
1

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)

1MO.1:V.29,64;64;:MOVE-57,20:GC.0,1:F.U=-56TO56:X=U/50:IFX<>0TH.B=X^2^.33/2
2R=(B^2-X^2+1)^.5*50:DRAWU,B*50+R:DRAW U,B*50-R:N.

ungolfed. (176 Bytes)

1 MODE 1
2 VDU 29,64;64;
3 MOVE -57,20
4 GCOL 0,1
5 FOR U = -56 TO 56
6 X = U/50
7 IF X <> 0 THEN B = X^2^.33/2
8 R = (B^2-X^2+1)^.5*50
9 DRAW U,B*50+R
10 DRAW U,B*50-R
11 NEXT

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.

Sassquad
quelle