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.
Les équations sont soit:
ou
t
est dans la gamme [-1, 1]
.
ou
ou
C'est le code-golf, 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).
la source
IF (X²+ANS²-1)³-X²ANS³<0
parIF (X²+ANS²-1)³<X²ANS³
?Perl, 86 octets
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:
Explication (puisque OP l'a demandé):
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.1e3
signifie 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>0
plutôt que==0
parce que je veux un coeur rempli.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.
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.
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. .
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.
la source
MathematicaWolframAlpha,17151311 octetsSupprimez 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à.
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?
Essayez ça ici!
la source
heart curve 1
heartcurve1
marche.Mathematica, 52 octets
Nous pourrions économiser un octet de plus avec
ContourPlot
mais l'arrière-plan devient un peu trippant:Pour un octet supplémentaire, nous pourrions utiliser la quatrième formule et à la
PolarPlot
place:la source
Casio FX-7700GH, 21 octets
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.
(ouais
je suisassez vieux et poussiéreux)la source
MATLAB / Octave, 31 octets
la source
SmileBASIC,
8581 octetsla source
Desmos ,
20 1615 octetsV 2:
(=
xx)^.3y=xx+yy-1
)V 1:
V 0:
la source
xx
au lieu dex^2
MATL, 36 octets
Essayez-le sur MATL Online
la source
Python,
119116 octetsEssayez-le en ligne
la source
SageMath, 66 octets
Essayez-le en ligne
Malheureusement, les noms longs de
implicit_plot
etparametric_plot
(ainsi que la nécessité de définir une variable autre que celle définie implicitementx
pour 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
la source
^.5
travailler à la place de**.5
?^
est XOR.^
à**
. Je me demandais si c'était parce qu'il ne pourrait pas substituer correctement s'il était suivi d'un.
**
). Si vous essayez d'utiliser^
, vous obtiendrez un avertissement et un résultat incorrect.C,
137133 octetshttp://codepad.org/zqqYUui8
Merci @AlbertRenshaw, j'ai également changé les 100 en 99 pour 2 octets de plus
la source
v
pour la fonction, bon flair. Vous pouvez raser deux octets en remplaçant4000
par4e3
et en remplaçant0.001
par1e-3
Gelée , 31 octets
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: sur une grille de caractères de 51 lignes sur 51 séparées par un saut de ligne.
la source
JavaScript (ES6),
151147 octetsEdit: 4 octets sauvegardés grâce à @ user2428118. Version ES7 pour 143 octets:
la source
y**3
au lieu dey*y*y
?BBC BASIC, 80
Finira le golf demain.
Téléchargez l'interprète à l' adresse http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
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
En utilisant la formule quadratique standard pour les expressions du type
ay^2+by+c=0
et en tirant parti du fait quea
= 1 nous obtenonsoù
-b/2 = (x^0.66)/2
(représenté parb
dans le programme.)Nous balayons simplement les valeurs de
x
gauche à droite, en traçant une ligne verticale entre chaque paire de valeurs valides poury
créer une forme solide.non-golfé
la source
Ruby, 80 octets
Montre à Ruby un peu d'amour.
Sortie:
avec quelques lignes vides en haut et en bas
la source
Processing.js:
123119 octetsungolfed:
joué au golf:
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
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.
la source
float
au lieu deint
TI-84 Basic,
4038 octetsSemblable à la réponse et à la sortie de @ 12Me21, mais à la place pour la série TI-83/84.
la source
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)
non golfé. (176 octets)
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.
la source