Défi
Dessiner une forme de coeur
... comme de l'art ASCII!
Votre art ne doit pas nécessairement ressembler au mien, mais il doit ressembler à une forme de coeur.
L'intérieur du cœur doit contenir les mots "Amour" au moins 20 fois
Règles
- Le programme doit écrire l’art sur la console.
- Le code le plus court (en octets, toutes les langues) l'emporte.
Le gagnant sera choisi le 14 février à la Saint Valentin
:D
popularity-contest
Réponses:
JavaScript [160 octets]
Le code suivant semble être 160 octets non formaté.
Exécutez-le simplement dans la console du navigateur (par exemple, dans Firebug ou Chrome Dev Tools).
la source
/[lve]\d/
à/../
et tableau en utilisant à la['','Love','\n']
place de l' objet permettra d' économiser encore 10 octets menant à 150 octets au total, mais le cœur source ne sera pas que bien plus en forme:)
function(c){return
parc=>
et enlever}
. Vous devriez poster une version plus courte!:)
mais merci de le signaler! J'espère que JavaScript sera bientôt en concurrence avec Perl et Python en matière de golf et que tout le monde pourra l'essayer.GolfScript:
625754 caractèresSortie:
Ou, pour un amour ajouté, et l'abus obligatoire de l'insignifiance des espaces (pour 84 caractères):
Sortie:
la source
C - 183 octets
Pas un gagnant, mais tout un amour. Pouvez-vous comprendre comment cela fonctionne?
Sortie:
la source
V
en bas.C
! La courbe de coeur est du domaine public :)Python, 210 caractères
Bien sûr, cela ne gagnera pas car c'est un code golf, mais je voulais être créatif et je n'ai pas utilisé le mot
Love
dans mon code source:C'est la sortie:
la source
Scala - 273 personnages
Eh bien, je ne m'attends certainement pas à gagner pour la brièveté, mais je voulais voir si je pouvais le faire à Scala. Un golfeur plus intelligent pourrait probablement supprimer plusieurs octets, mais voici ce que j'ai obtenu:
Ou, si vous préférez (code toujours valide!)
Imprime deux demi-cercles et un triangle sur l’écran, créant ainsi un fac-similé assez décent du cœur.
Doit être exécuté avec l’interprète scala (la compilation nécessiterait un peu plus de travail
object Main { def main(args: Array[String]) = { ... } }
et je n’ai rien d’autre.la source
Python 2, 117
imprime exactement 20
love
s horizontalement.sortie:
la source
replace()
les; dans la 3ème ligne,print
changez un+
en,
et 10 avec 9; dans la dernière ligne, utilisez la valeur de la variable x. pastebin.com/i1TSEZfElove
du côté droit que vous avez obtenues en décalant les horizontaleslove
?love
s verticales . Y compris ceux-ci lelove
compte sera 23: DPerl - 36 octets
Sortie:
C'est un peu un tricheur; il imprimera
Love
une fois pour deux caractères non blancs dans le code source. Avec les espaces requis pour former le cœur, le code a une longueur de 61 octets; aplati, il n’ya que 36 octets:Perl - 60 octets
Affiche les éléments suivants:
Exactement 20
Love
.Brève explication
sur demande
for'3h112a05e0n1l2j4f6b9'=~/./g
Cela modifie l'instruction print et effectue une itération sur chaque caractère. L'expression rationnelle
/./
correspond évidemment à un seul caractère et, dans un contexte de liste/./g
, renverra une liste de tous les caractères de la chaîne. Ce serait un moyen plus courant, mais légèrement plus long, d’écrirefor split//,'3h112a05e0n1l2j4f6b9'
.print$"x(15&ord),Love,$/x/\D/
La variable spéciale utilise par
$"
défaut un espace. La ord valeur Inal de chaque caractère mod 16 stocke les espaces numériques nécessaires entre chaqueLove
via répétition de chaîne (x
). Enfin, si le caractère n'est pas un chiffre (/\D/
), la valeur par$/
défaut de"\n"
est fixée à la fin.la source
-e
)$"
par' '
:perl -e "print' 'x(15&ord),Love,$/x/\D/for'3h112a05e0n1l2j4f6b9'=~/./g"
Wolfram Language (Mathematica) - 111
la source
Javascript -
147141137133 caractèresRemarque: j'ai posté une autre réponse, mais celle-ci utilise une approche différente et le cœur a une forme différente.
Comment ça marche :
Tout d'abord, je rends un diamant (l'équation est
|x|+|y|
), puis, je combine deux cercles sur le dessus. Les valeurs x sont reflétées (un seul cercle suffit).la source
0
nombres flottants avant et en affectantMath.abs
une variable.Sclipting - 28 caractères / 56 octets
Sortie:
la source
긢꼙겱딧꽔밂各감啃갰啃긂밀⓶復냄뭖끐⓷復겠⓸復終
- mais cela utilise l'啃
instruction, que j'ai ajoutée après que ce défi ait été posté, donc ça ne compte pas.)JavaScript -
136121115113 caractèresPour exécuter: copier coller dans la console du navigateur (par exemple: Chrome ou Firefox)
la source
["L","o","v","e"] => "Love"
permettra d'économiser 11 octets.C, 116 caractères
(Je ne sais pas si c'est assez en forme de coeur ... remplit l'intérieur de trois cercles pour produire la sortie.)
Sortie:
Plus tôt dans le processus de golf, avant de remplacer les expressions constantes (modifier
M
pour ajuster la taille):Je me suis aussi senti obligé de le faire. : P
la source
All variables in C are typed
fr.wikibooks.org/wiki/C_Programming/Variablesint
que fonctionnalité héritée de la version antérieure à ANSI-C. Il compile parfaitement pour moi avecclang foo.c
ougcc -std=c99 foo.c
(cependant, avec beaucoup d'avertissements). Avez-vous des erreurs? Je ne connais pas assez C pour m'assurer que je ne dépend pas d'un comportement indéfini, mais je crois que je ne le fais pas.Ruby, 47 ans, ou Golfscript, 41 ans
Réponse ennuyeuse.
Version de Golfscript:
Sortie:
la source
Ruby - 113 Caractères
Sortie:
Pour être plus clair
la source
Perl - 159 caractères
Pas massivement joué au golf ...
Voici la même chose avec des espaces ajoutés pour une lisibilité légèrement meilleure ...
La sortie est ...
Le mot complet "Amour" est contenu à l'intérieur (verticalement) 22 fois, plus de nombreux partiels.
la source
APL, 36 caractères / octets *
Doit être évalué avec
⎕IO←0
(la valeur par défaut varie selon l'implémentation)* APL peut être écrit dans un jeu de caractères sur un octet si nécessaire (tant que vous n'utilisez aucun autre caractère Unicode), donc N caractères = N octets aux fins de comptage.
Sortie:
Contient exactement 20 "Love"
la source
BrainFuck étendu : 193 (compté sans espaces blancs non essentiels)
Se transforme en:
Brainfuck: 264 (comptés sans espaces blancs non essentiels)
Vous le lancez avec n’importe quel interprète. Ubuntu a
bf
etbeef
et les deux fonctionnent bien.La sortie (344 octets):
Code EBF non-golé:
la source
C # 224
Formaté:
Sortie:
la source
Python, 334 octets
sortie:
la source
str
appel avec des répétitions de chaîne, car*
sa priorité est supérieure à celle de+
.Perl - 97 caractères
Cette réponse est basée sur la solution Python à 121 caractères de @ Wasi.
Vous devez exécuter perl avec l'
-M5.010
option d'activation des fonctionnalités spécifiques à 5.10. Ceci est apparemment autorisé .Caractéristiques intéressantes:
$.
pour stocker le mot "amour". C'est parce qu'il peut être immédiatement suivi d'un autre mot si nécessaire.$.for
est marqué sans ambiguïté comme$.
suit parfor
;$_for
ne serait pas tokenisé comme$_
suit parfor
car$_for
est lui-même un nom de variable légal.$"
, une variable intégrée représentant ce caractère auquel les tableaux seront joints lors de l'interpolation dans une chaîne (et par défaut un caractère d'espacement unique) est utilisée à la place de" "
économie d'un personnage ici et là..replace
méthode manière significative dans le golf de code.for 0..4
gagne pareillementfor i in range(5)
la source
CJam - 33 octets
Essayez-le en ligne
Sortie:
Explication:
la source
Bash, 170 octets
totalement une copie de programFOX :)
la source