Dessiner / tracer un graphique de coeur


45

Votre défi est de dessiner / tracer un des coeurs ci-dessous. La taille doit être au moins 50x50 pixels (les graphiques vectoriels sont corrects). Vous pouvez choisir lequel des coeurs vous voulez dessiner / tracer. Les axes, lignes de quadrillage, etc. sont acceptés. Il doit y avoir au moins 100 coordonnées / points distincts sur le graphique. Le coeur peut être rempli de couleur si vous voulez.

entrez la description de l'image ici

Les équations sont soit:

entrez la description de l'image ici

ou

entrez la description de l'image ici

entrez la description de l'image ici

test dans la gamme [-1, 1].

ou

entrez la description de l'image ici

ou

entrez la description de l'image ici

C'est le donc le code le plus court (dans chaque langue) en octets l'emporte. Veuillez fournir le résultat (ou le lien vers un interprète en ligne).

Réponses:


66

TI-80 BASIC, 45 43 41 39 octets

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

entrez la description de l'image ici

Cela a pris un certain temps et ma batterie est faible, je ne voulais donc pas continuer.

J'ai essayé d'utiliser la deuxième équation, mais je ne pouvais pas la faire fonctionner . En réalité, il s'est avéré être plus long, alors j'ai simplement adapté ma réponse.

ÉDITER: Je viens de remarquer le besoin de 50 x 50 pixels. Malheureusement, l’écran n’a que 47 pixels de haut, ce n’est donc pas possible.


1
créatif en effet!
Décembre

8
Cela fait longtemps, mais pouvez-vous remplacer IF (X²+ANS²-1)³-X²ANS³<0par IF (X²+ANS²-1)³<X²ANS³?
wchargin

Oh, j'arrive pas à croire que je n'y ai pas pensé! merci
12Me21

45

Perl, 86 octets

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

Courez avec perl -E.

Trace un cœur ASCII rempli en utilisant la première équation. Notez que l’axe des x est étiré d’un facteur ~ 1,265: c’est pour contrecarrer le fait que les polices terminales sont généralement beaucoup plus grandes verticalement qu’horizontalement.

Sortie:

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

Explication (puisque OP l'a demandé):

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

C'est simplement la première équation, légèrement réorganisée pour la raccourcir. $ y représente directement le y dans la formule. $ _ est initialement proportionnel à x, mais est multiplié par lui-même ( $_*=$_/1e3), ce qui le rend proportionnel à x². Étant donné que x² est utilisé deux fois dans la formule, cela économise quelques octets.

1e3signifie 1000, et a été choisi parce que c'est court et que le résultat semble bon. ** est l'opérateur de Perl. J'utilise >0plutôt que ==0parce que je veux un coeur rempli.

flip_flop := $|--?v60:3

v60 est un abus de la syntaxe archaïque de chaîne de version pour désigner le caractère avec le code ASCII 60: '<'.

$ | est une variable magique qui ne peut être que 0 ou 1. Décrémenter s'il est déjà 0 le définit sur 1. Décrémenter lorsqu'il est 1 le définit naturellement sur 0. Ainsi, $ | - est souvent utilisé comme une bascule: à chaque fois c'est évalué, ça alterne entre vrai et faux.

Dans son ensemble, cette expression retourne alternativement '<' et 3.

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

Ternaires imbriqués. Si la condition est fausse (→ nous sommes hors du cœur), elle est évaluée à $ ", qui est une variable magique dont la valeur par défaut est" "(un seul espace). Si la condition est vraie (→ nous sommes dans le cœur), évalue flip_flop.

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

Evalue inner_loop à plusieurs reprises, avec $ _ (variable «par défaut» de Perl) allant de -40 à 40, par incréments de 1. Il collecte les résultats de ces évaluations dans une liste temporaire, puis les affiche tous, concaténés, se terminant par une nouvelle ligne. .

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

Cela exécute plusieurs fois outer_loop, avec $ y allant de 1,24 (1 - (-6 / 25)) à -1 (1 - 50/25), par incréments de 0,04.

Notez que y est divisé par 25, tandis que x² est divisé par 1000, ce qui revient à diviser x par sqrt (1000). Le facteur ~ 1,265 que j'ai mentionné est sqrt (1000) / 25.


5
Euh, je suppose que cela n'enfreint aucune règle ... Mon préféré jusqu'à présent :) J'aimerais une explication cependant :)
Stewie Griffin

1
Je suis confus à propos de quelque chose. Pourquoi utiliser? V60 over, dites "<"?
Nic Hartley

Même longueur, mais plus facile à taper.
Grimmy

Un coeur fait de coeurs.
TheWanderer

34

Mathematica WolframAlpha, 17 15 13 11 octets

Supprimez 2 octets grâce à Martin Ender (1ère courbe cardiaque -> courbe cardiaque 1)

Réduit encore 2 octets grâce à Martin Ender (courbe du coeur 1 -> heartcurve1)

C'est probablement de la triche (la solution évidente), mais voilà.

heartcurve1

Essayez-le ici!

Je suis sûr qu'il existe un moyen de raccourcir le 1er, le cœur ou la courbe de sorte que Wolfram l'accepte toujours. Eh bien, il n’ya plus d’espace, peut-être une abréviation de coeur?

Est-ce que je reçois des points bonus pour en avoir tracé 2?

heartcurves

Essayez ça ici!


5
heart curve 1
Martin Ender

6
En fait, ça heartcurve1marche.
Martin Ender

23
@MartinEnder Quoi dans le monde
Thunda

1
première de heartcurves ressemble plus à un cul
Mikhail V

@ MikhailV 0ème heartcurve (cardoïde) ressemble à un mégot.
Thunda

29

Mathematica, 52 octets

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

entrez la description de l'image ici

Nous pourrions économiser un octet de plus avec ContourPlotmais l'arrière-plan devient un peu trippant:

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

entrez la description de l'image ici

Pour un octet supplémentaire, nous pourrions utiliser la quatrième formule et à la PolarPlotplace:

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

entrez la description de l'image ici


23
"Un peu trippant" est un euphémisme ...
Mego

ContourPlot déclenche tellement le TOC. Aaaaaah! : D
KeyWeeUsr

25

Casio FX-7700GH, 21 octets

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

La fonction de graphe sans nom doit être entrée dans l’une des fentes de la fonction de coordonnée polaire, puis fait ce qui est indiqué sur l’étain.

La plage graphique doit être définie manuellement (à moins que cela ne corresponde à la plage définie actuellement), je la règle sur Xmin=-2.75, Xmax=2.75, Ymin=-4, Ymax=1.

Devrait fonctionner sur d'autres calculatrices Casio Power Graphic Series, et très probablement ultérieurement sur des calculatrices graphiques Casio.

Un coeur dessiné par une calculatrice Casio fx-7700GH (ouais je suis assez vieux et poussiéreux)


18

MATLAB / Octave, 31 octets

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

entrez la description de l'image ici


9

SmileBASIC, 85 81 octets

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.

entrez la description de l'image ici


9

Desmos , 20 16 15 octets

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

vous pouvez utiliser xxau lieu dex^2
12Me21

@ 12Me21, oh c'est excellent, merci!
Daniel

Votre nombre d'octets est incorrect, vous avez une nouvelle ligne.
Rɪᴋᴇʀ

@Riker, je ne vois pas en quoi c'est faux. Où y a-t-il une nouvelle ligne?
Daniel

imgur.com/a/4eTyt V2 est de 14 octets
Rɪᴋᴇʀ


7

Python, 119 116 octets

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

Essayez-le en ligne

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

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


6

SageMath, 66 octets

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

Essayez-le en ligne

Malheureusement, les noms longs de implicit_plotet parametric_plot(ainsi que la nécessité de définir une variable autre que celle définie implicitement xpour la première) rendent les trois premières options beaucoup trop longues pour être prises en compte.

Merci à busukxuan et à Andrea Lazzarotto pour un octet


1
Est-ce que ^.5travailler à la place de **.5?
busukxuan

1
@busukxuan Nope. Sage est construit sur Python et ^est XOR.
Mego

1
Mais la sauge se substitue ^à **. Je me demandais si c'était parce qu'il ne pourrait pas substituer correctement s'il était suivi d'un.
busukxuan le

@busukxuan Sage utilise la notation de puissance de Python ( **). Si vous essayez d'utiliser ^, vous obtiendrez un avertissement et un résultat incorrect.
Mego

1
@AndreaLazzarotto Alors apparemment, ma mémoire est défectueuse. Merci.
Mego

6

C, 137 133 octets

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

Merci @AlbertRenshaw, j'ai également changé les 100 en 99 pour 2 octets de plus


1
+1; J'aime l'utilisation de vpour la fonction, bon flair. Vous pouvez raser deux octets en remplaçant 4000par 4e3et en remplaçant 0.001par1e-3
Albert Renshaw

6

Gelée , 31 octets

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

Essayez-le en ligne!

ou 35 octets avec a plutôt que de *remplir: remplacez la ligne médiane par ²+’*3<ç×9829Ọ»⁶.

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

Comment?

Implémentations: équationsur une grille de caractères de 51 lignes sur 51 séparées par un saut de ligne.

*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

5

JavaScript (ES6), 151 147 octets

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)

Edit: 4 octets sauvegardés grâce à @ user2428118. Version ES7 pour 143 octets:

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)


que diriez-vous y**3au lieu de y*y*y?
samedi

1
@svarog Ainsi, ma note "serait un peu plus courte dans l'ES7" ...
Neil,

Eh bien, cela fonctionne sur le chrome 55, alors pourquoi ne pas ajouter une version es7?
samedi

1
@svarog Parce que je n'ai pas le chrome 55 à portée de main ...
Neil

1
@ThisSuitIsBlackNot Il s'est plaint de variables non déclarées lorsque j'ai essayé.
Neil

4

BBC BASIC, 80

Finira le golf demain.

Téléchargez l'interprète à l' adresse http://www.bbcbasic.co.uk/bbcwin/bbcwin.html

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.

Dessine un cœur rempli en utilisant la première équation, que nous réorganisons et prenons la racine cubique de (il y a 3 racines cubiques d’un nombre réel, un réel et 2 complexes mais nous ne nous sommes intéressés qu'à la racine réelle ici.) Nous avons ensuite réorganisé à nouveau obtenir un quadratique y

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

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

En utilisant la formule quadratique standard pour les expressions du type ay^2+by+c=0et en tirant parti du fait que a= 1 nous obtenons

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

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

-b/2 = (x^0.66)/2(représenté par bdans le programme.)

Nous balayons simplement les valeurs de xgauche à droite, en traçant une ligne verticale entre chaque paire de valeurs valides pour ycréer une forme solide.

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.

non-golfé

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

4

Ruby, 80 octets

Montre à Ruby un peu d'amour.

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

Sortie:

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

avec quelques lignes vides en haut et en bas


2

Processing.js: 123 119 octets

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;
}

joué au golf:

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;}

Celui-ci est assez trompeur, car il représente les graphes n ° 2 de 0 à l'infini au lieu de -1 à 1, comme indiqué dans l'image, afin d'économiser sur les deux abs (t). Mais c'est techniquement correct car il y a plus de 100 points.


130 octets "correctier" un

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;}

essayez-le en ligne

remarque: il existe probablement un moyen d'obtenir 100 points sur le canevas 100x100 par défaut et de simplifier l'installation.


Aucun de vos extraits ne fait quoi que ce soit pour moi sur ma version locale de Processing (à l'exception de la seconde qui ne
rapporte qu'un

avez-vous essayé sur le carnet de croquis? ("essayez-le en ligne") vous devez cliquer sur "rendre l'esquisse"
satibel

Mais je pense que cela s’appellerait plutôt "Processing.JS". Pour que l'extrait fonctionne pour moi, vous devez utiliser floatau lieu deint
Kritixi Lithos

oups, j'ai oublié le .js, et grâce à ça j'ai économisé 4 octets en supprimant l'inutile.
Satibel

2

TI-84 Basic, 40 38 octets

Semblable à la réponse et à la sortie de @ 12Me21, mais à la place pour la série TI-83/84.

While 1:2rand-1→A:2rand-1:If (A²+Ans²-1)³>A²Ans³:Pt-On(A,Ans:End

Est-ce qu'utiliser Ans est plus petit ici? Je pensais que Ans était 2 octets.
12Me21

@ 12Me21 Non, c'est la même taille, et plus rapide aussi. (Pour la TI-83/84 au moins, je ne connais pas la TI-80).
Timtech

1

BBC BASIC (BBC Micro) (126 octets)

Ceci est une variante de la réponse de Level River Street , mais pas pour l'itération originale de BBC Micro par BBC Micro.

Vous pouvez copier et coller l’un des éléments suivants dans la nouvelle fonctionnalité de collage de JSBeeb à l’ adresse https://bbc.godbolt.org/ (émulateur BBC Micro basé sur JavaScript). Une fois l’opération collée, appuyez sur Entrée dans l'écran pour afficher un nouvel écran. à l'invite, tapez RUN, puis appuyez sur Entrée pour exécuter l'une ou l'autre version.

joué au golf. (126 octets)

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.

non golfé. (176 octets)

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

La ligne 7 nécessite une vérification de X pour éviter une erreur "Plage de journal" lorsque X devient 0 au milieu de la boucle. Autre que cela, c'est à peu près la même chose. Il est beaucoup plus lent de dessiner sur une vraie machine, que JSBeeb émule plutôt bien.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.