Votre langue de programmation préférée vient de fêter son anniversaire. Soyez gentil et chantez la chanson Happy Birthday .
Bien sûr, vous devriez accomplir cela en écrivant un programme dans cette langue. Le programme ne prend aucune entrée et écrit le texte suivant dans la sortie standard ou dans un fichier arbitraire:
Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear [your favourite programming language]
Happy Birthday to You
Vous devriez substituer la partie entre crochets (et omettre les crochets).
Ceci est un code de golf - le code le plus court gagne.
MISE À JOUR
Je suis heureux que la question ait suscité un grand intérêt. Permettez-moi d'ajouter des informations supplémentaires sur la notation. Comme indiqué à l'origine, cette question est un code de golf, donc le code le plus court va gagner. Le gagnant sera choisi à la fin de cette semaine (19 octobre).
Cependant, je récompense également les autres soumissions spirituelles par des votes positifs (et j'encourage tout le monde à le faire également). Par conséquent, bien que ce soit un concours de code-golf, les réponses pas très courtes sont également les bienvenues.
Résultats
Félicitations à Optimizer , le gagnant de ce concours avec son envoi de 42 octets, CJam .
la source
Réponses:
CJam,
4642 octetsComment ça fonctionne:
Cela laisse la pile comme suit à la fin du code:
qui sont imprimés automatiquement pour sortir en tant que
Essayez-le ici (copiez le code et lancez-le)
la source
LOLCODE: 109 (105 avec l'orthographe "correcte")
LOLCODE n’est pas une excellente langue pour le golf, d’autant plus que vous perdez toute sa beauté et son expressivité lorsqu’on raccourcit le code.
Testez-le avec loljs
Ceci est mon interprétation préférée, pesant 187 caractères (espaces ajoutés pour plus de clarté):
la source
Mathematica souhaite des codes-barres d'anniversaire - beaucoup trop d'octets
Ceci imprime les vers et les lit à haute voix.
StringReplace
remplace chaque virgule par une NewLine. Les codes à barres ne peuvent pas contenir de caractères de contrôle.la source
10
le code à barres (coin en bas à droite), qui aBarcodeRecognize
été introduit dans Mathematica 10. ^^TI-Basic, 53 octets
Eh bien, puisque tout le monde utilise son langage de programmation préféré, je pourrais aussi bien ajouter un de mes anciens favoris. Au fil des ans, j'ai passé beaucoup de temps (avant de passer aux langages de programmation réels) à taper des commandes dans une fenêtre deux fois plus petite qu'un téléphone intelligent.
Ma calculatrice ne prend pas en charge les lettres minuscules et les seules variables pouvant être des chaînes sont Str1, Str2, etc.
la source
Sed,
6055 octets(1 caractère ajouté car il n'y a aucun moyen
sed
de travailler sans entrée.)Certainement pas un gagnant, posté à démontrer
sed
rare de »s///
caractéristique de remplacer le seul n ième occurrence.Sed (plus court mais pas intéressant): 52 caractères
Échantillon échantillon:
la source
sed
les réponses sont toujours gagnantes IMO :)sed
fonctionner sans entrée.)”.C, 73 octets
la source
i++-3
. (Actuellement, le «Cher c» apparaît à la deuxième ligne.) (Si je n'utilisais qu'une seule variable, je la nommerais «c».)Python,
616059la source
H="\nHappy Birthday to You"
etprint(H*3)[:59]+" Dear Python"+H
print
argument.h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Dear
et en le remplaçant59
par60
.sh, 52
la source
H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H
.:-
couvrant également les cas où il est défini mais videArnoldC , 228 octets
Laisse faire Arnold Schwarzenegger chant ...
sortie:
la source
Invalid input '\', expected '"' (line 2, pos 40)
Hahpy Birfday
réduit le nombre de caractères de 4.APL (48)
la source
↑'Happy birthday '∘,¨⌽4⍴3⍴'to you' 'dear APL'
Langage de programmation Shakespeare , 3429 octets
Mes propres mots, il y a quelque temps. Et pourtant, quelqu'un était assez fou pour le faire. Oui oui je sais. Trop d'octets. Mais SPL mérite d’être inclus ici, je pense. Et croyez- moi, j'ai fait un effort gigantesque pour "jouer au golf" ce programme, c'est pourquoi il est un peu répétitif et utilise principalement les mêmes mots (j'aurais toujours pu suivre la suggestion de DLosc , mais ce serait trop extrême, même pour moi) .
Le sens de tout ça?
OK, si vous êtes curieux de savoir comment tout cela est supposé fonctionner, laissez-moi essayer d'expliquer mon raisonnement. Tout d'abord, les variables. Ils doivent provenir de jeux shakesperiens et, comme le décompte des personnages est important, nous devons choisir les plus petits; ainsi,
Ajax
etFord
apparaissent. Ils ont besoin d'une description après avoir été déclarés (ce qui est ignoré, mais quand même); J'aurais pu utiliser une seule lettre, mais heh.Acte I, Scène I
var Ajax, Ford; Ford = 0;
Nous apportons les variables dans la scène et faisons
Ajax
direFord
que sa valeur sera 0.Acte I, Scène II
if (Ford > 2*1+1) goto Scene V; Ford = Ford + 1;
OK, si la valeur stockée
Ford
est supérieure à 3, le programme passe à la scène V; sinon, sa valeur est incrémentée.Acte I, scène III
Ford = 2*2*2*2*2*2*1+2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*1-1; print((char) Ford); Ford = Ford+2*2*2*2*1-1; print((char) Ford); print((char) Ford); Ford = Ford+2*2*2*1+1; print((char) Ford); Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*1+2*2*2*1+(-1); print((char) Ford); Ford = Ford+2*2*2*1+1; print((char) Ford); Ford = Ford+2*1; print((char) Ford); Ford = Ford+2*2*2*(-1)+2*2*(-1); print((char) Ford); Ford = Ford+2*2*(-1); print((char) Ford); Ford = Ford+2*(-1)+(-1); print((char) Ford); Ford = Ford+2*2*2*2*1+2*2*2*1; print((char) Ford); if (Ajax == 2*1) goto Scene IV; Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*2*1+2*2*2*2*2*1+2*(-1); print((char) Ford); Ford = Ford+2*2*(-1)+(-1); print((char) Ford); Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*2*1+2*2*2*(-1)+1; print((char) Ford); Ford = Ford+2*2*2*2*1+2*2*2*1+2*(-1); print((char) Ford); Ford = Ford+2*2*2*1+2*-1; print((char) Ford); goto Scene II;
Charges et charges de lignes. L'idée est de manipuler la valeur stockée
Ford
, d'effectuer des charges et des charges d'opérations arithmétiques afin d'obtenir le numéro ASCII des lettres souhaitées, puis nous demandons au compilateur de générer le nombre sous forme de caractères. C'est comme ça que vous écrivezHappy Birthday
. Il y a unif
intérieur dans cette scène: l'idée est de vérifier si c'est la troisième phrase de la chanson; si c'est le cas, nous passons à la scène IV; sinon, nous continuons à écrireto You
. Après cela, nous retournons à la scène II.Acte I, Scène IV
Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*2*1+2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*1+1; print((char) Ford); Ford = Ford+2*2*(-1); print((char) Ford); Ford = Ford+2*2*2*2*1+1; print((char) Ford); Ford = 2*2*2*2*2*1; print((char) Ford); Ford = Ford+2*2*2*2*2*1+2*2*2*2*1+2*1+1; print((char) Ford); Ford = Ford+2*(-1)+(-1); print((char) Ford); Ford = Ford+2*2*(-1); print((char) Ford); goto Scene II;
La façon dont cela fonctionne est similaire à la scène ci-dessus: l'idée est d'écrire
Dear SPL
.Acte I, Scène V
End.
Juste comme ça.
Je n'ai toujours pas trouvé d'endroit où cela peut être testé, malheureusement ...
la source
fat fat fat fat cat
. De plus, j'utilise github.com/drsam94/Spl/blob/master/splc.py pour compiler mon code Spl .Ruby, 54 octets
Je pensais juste "Hé, il n'y a pas encore de réponse de Ruby", mais il en apparut une quelques secondes avant celle-ci. Tant pis...
la source
Un amour pour PHP?
615958 octetsVoyez-le en action @ http://sandbox.onlinephpfunctions.com/
la source
$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
\n
par un saut de ligne afin de sauvegarder un caractère.Je ne peux pas choisir une seule langue: /
BrainBack: 68
BrainBack est un mélange de BrainFuck et de Forth, conçu pour un défi PCG 7 mars 2014
BrainFuck étendu : 79
L'anniversaire d'EBF est le 16 juillet 2010
Schéma: 96
(R5RS, Raquette, R6RS REPL)
Scheme est né en décembre 1975 (NB: PDF)
Zozotez : 96
Cependant, il est plus juste de le faire en français (86):
Sortie:
L'anniversaire de Zozotez est le 19 juillet 2011
la source
Joyeux anniversaire à Zozotez
.Le poisson mort (
26102391 caractères)Qu'est-ce que c'est ça? Un seul défi de sortie? On dirait que c'est un travail pour Deadfish !
Malheureusement, Deadfish ne produisant que des entiers, le code ci-dessus affiche les représentations ASCII de chaque caractère du morceau.
Si nous utilisons la spécification qui
alors nous pouvons jouer au golf jusqu'à 2391 car.
Note: Deadfish n'est pas vraiment ma langue préférée, mais je n'ai pas pu résister: P. Le golf à Deadfish est également un casse-tête amusant.
la source
JS, 83 octets
ou 79 octets par @Ingo Bürk
ou 71 octets par @kapep
ou exécutez sur la console cette page (42 octets)
la source
h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)
(vous pouvez toujours utiliserprompt
pour économiser encore plus)t='to you\n';console.log(h='Happy birthday',t+h,t+h,'dear JavaScript\n'+h,t)
console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)
alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)
69R: 70 octets
Profite du
paste
recyclage des vecteurs.la source
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
cat
ajoute des espaces entre les chaînes. Donc, vous vous retrouvez avec un espace au début de chaque ligne sauf la première.write(x,"")
->write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")
68 octets. Voici ma solution originale avec 73p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")
Vector Recycling me bat encore une fois.`~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"")
tio.run/##K/r/…T-SQL,
8987 octetsEdit: Ne devrait probablement pas draguer ces vieilles choses, mais j'ai juste remarqué un changement évident à cela pour récupérer quelques octets.
En utilisant STUFF pour supprimer les parties non désirées de la chaîne, l'index de départ est fourni par les valeurs de la
FROM
clause multipliées par 3la source
GNU dc, 51
la source
dc
, mais même la version presque brute est plus courte:[Happy Birthday To You]d[Happy Birthday Dear dc]rdf
51 caractères.Perl - 58
Courir avec:
Juste pour le fun:
la source
say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]
vousPython 507 octets
Ne pas gagner de prix ... mais si vous le regardez attentivement, il y a de l'art ASCII:
la source
PowerShell -
696459et 91
et 108
la source
Ruby, 56 ans
la source
=
renvoie toujours le résultat de l'expression après le signe égal. Si je mettais cela en ligne, cela ne ferait qu’imprimer"Dear Ruby"
(String#[]=
est une méthode).Marbelous , 151
Happy Birthday
Chaque impressionhb
est appelée, avecto you
ouDear Marbelous
ajouté, en fonction de l’entrée0
ou1
. La bille passéehb
ne sera pas sortie car elle restera coincée dans le synchroniseur&0
.Ci-dessous se trouve le tableau
hb
, avec l'hex converti en texte ASCII:la source
CJam, 46 octets
Essayez ici.
Cela laisse le tableau suivant sur la pile:
Dont le contenu est automatiquement imprimé dos à dos à la fin du programme.
Alternativement, avec une boucle for et le même nombre de caractères:
la source
Haskell: 75
Sortie de code dans ideone
Haskell une doublure: 79
Vous pouvez essayer le one liner en ligne ici: http://tryhaskell.org/
la source
mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
putStrLn
conforme à la spécification (vous obtenez des guillemets doublesprint
)_
n'est pas nécessaire car la valeur de retour de main est supprimée - vous ne la voyez que dans GHCiVar'aQ - 121
la source
GolfScript: 54 caractères
Échantillon échantillon:
la source
T-SQL (compatible MS): 75
la source
+char(10)
par un saut de ligne dans la citation, créez simplement la partie retour de la chaîne.C #
(75)(73)Utilisation
System.Diagnostics
dans le but deDebug.Print
Mettre à niveau vers le code @Abbas
Passer à @Tyress 'code
(83)(76)Sortie:
la source
String.Format
l’opérateur ternaire. Vous pouvez également faire en sorte que cela ressemble beaucoup moins à un programme C # et à l’utiliseri++<3
; p