Chantez Happy Birthday dans votre langue de programmation préférée

119

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 .

David Frank
la source
2
Pouvons-nous compter le nom du langage de programmation comme un octet, car il semblerait juste que les personnes qui codent dans une langue longue comme JavaScript contre quelqu'un le faisant en C. Nous recherchons vraiment la logique la plus créative?
MonkeyZeus
14
Pourquoi tous les votes positifs pour cela en dépit de tous les votes négatifs pour la chanson de Bonbon ? C'est tout aussi ennuyeux qu'un défi.
xnor
10
Je devrais probablement mentionner que la chanson est protégée par le droit d’auteur et que la distribution de ces programmes peut provoquer un
phénomène
4
Au moins une des réponses imprime un premier saut de ligne. Est-ce permis?
Dennis

Réponses:

47

CJam, 46 42 octets

"Happy Birthday to You
"___F<"Dear CJam
"@

Comment ça fonctionne:

"Happy Birthday to You
"___                          "Push "Happy Birthday to You\n" string to stack 4 times";
    F<                        "From the last string, take only first 15 characters. F is a";
      "Dear CJam              "preinitialized variable whose value is 15";
"                             "Push "Dear CJam\n" to stack";
 @                            "Take the third string from end and put it to end";

Cela laisse la pile comme suit à la fin du code:

["Happy Birthday to You
" "Happy Birthday to You
" "Happy Birthday " "Dear CJam
" "Happy Birthday to You
"]

qui sont imprimés automatiquement pour sortir en tant que

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear CJam
Happy Birthday to You

Essayez-le ici (copiez le code et lancez-le)

Optimiseur
la source
1
est-ce que les "15 premiers personnages" viennent du F? est-ce ainsi qu'il connaît le chiffre 15?
vijrox
1
Oui, af sont 10-15.
Jacob
122

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.

HAI
H R "HAPPY BIRTHDAY "
T R SMOOSH H "TO YOU"
VISIBLE T
VISIBLE T
VISIBLE SMOOSH H "DEAR LOLCODE"
VISIBLE T

Testez-le avec loljs

Ceci est mon interprétation préférée, pesant 187 caractères (espaces ajoutés pour plus de clarté):

HAI
H R "HAPPY BERFDAY "
IM IN YR LOOP UPPIN YR N TIL BOTH SAEM N AN 4
  VISIBLE H!
  BOTH SAEM N AN 2, O RLY?
    YA RLY
      VISIBLE "DEER LOLCODE"
    NO WAI
      VISIBLE "2U"
    OIC
IM OUTTA YR LOOP
KTHXBAI
j'ai alarmé extraterrestre
la source
15
Je savais qu'il y aurait une réponse à LOLCODE. BTW, kan u wryt n lwrcase insyd t kwotez? KTHXBYE.
Level River St
2
J’ai essayé d’écrire une réponse LOLCODE à un autre défi il ya quelque temps, mais c’est trop verbeux pour le golf, il manque de structures de données décentes et de capacité à créer des fonctions complexes, ce qui a plutôt limité mes efforts!
J'ai alarmé extraterrestre
3
Cette réponse m'a donné envie de télécharger LOCODE et de l'apprendre réellement.
Pharap
2
C'est bien!!
Astopher
89

Mathematica souhaite des codes-barres d'anniversaire - beaucoup trop d'octets

Ceci imprime les vers et les lit à haute voix.

Bon anniversaire

Joyeux anniversaire
Joyeux anniversaire
Joyeux anniversaire Cher Mathematica
Joyeux anniversaire

StringReplaceremplace chaque virgule par une NewLine. Les codes à barres ne peuvent pas contenir de caractères de contrôle.

DavidC
la source
13
Je ne vois pas de bouton de code à barres sur mon clavier! Comment puis-je tester cela?
matsjoyce
17
J'adore 10le code à barres (coin en bas à droite), qui a BarcodeRecognizeété introduit dans Mathematica 10. ^^
Martin Ender
Oui! Je n'avais pas remarqué ça.
DavidC
11
En fait, j'ai scanné cela avec un lecteur de code QR. Il y a des espaces supplémentaires après chaque virgule. Ne pourriez-vous pas économiser des octets si vous… oh, attendez. Ça ne fait rien.
Timwi
55

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.

"HAPPY BIRTHDAY TO YOU
Disp Ans,Ans,sub(Ans,1,15)+"DEAR TI-BASIC
Ans

Ma calculatrice ne prend pas en charge les lettres minuscules et les seules variables pouvant être des chaînes sont Str1, Str2, etc.

Stretch Maniac
la source
Quelle saveur de TI-Basic? Je me suis vraiment familiarisé avec cela sur la TI-84.
Jesan Fafon
7
Toujours agréable de voir TI-Basic. Cela semble être une TI-Basic 8x standard, où toute expression est automatiquement stockée dans Ans, ce qui peut être utilisé comme une stratégie d'optimisation étrange et difficile à suivre. J'ai aussi commencé à programmer avec ce langage génial.
Codebreaker
4
Note aux éditeurs: pouvez-vous publier des modifications (dans ce cas, perte de 8 caractères) dans les commentaires plutôt que de simplement les éditer? Cela me ferait penser que c'est toujours ma réponse.
Stretch Maniac
2
+1 !! c'est comme ça que j'ai appris à programmer aussi. J'ai construit Tron pour la TI-83: ​​D c'était assez lent, donc pas amusant.
Nacht
2
Haha c'est génial. J'ai créé un jeu de blackjack pour la TI-83. Au cours du processus, j'ai appris toutes les règles du Blackjack de manière très intime.
thomasrutter
44

Sed, 60 55 octets

(1 caractère ajouté car il n'y a aucun moyen sedde travailler sans entrée.)

s/^/Happy Birthday To You/
h
G
G
G
s/To You/Dear sed/3

Certainement pas un gagnant, posté à démontrer sedrare de » s///caractéristique de remplacer le seul n ième occurrence.

bash-4.3$ sed 's/^/Happy Birthday To You/;h;G;G;G;s/To You/Dear sed/3' <<< ''
Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear sed
Happy Birthday To You

Sed (plus court mais pas intéressant): 52 caractères

s/^/Happy Birthday To You/
h
G
p
s/To You/Dear sed/

Échantillon échantillon:

bash-4.3$ sed 's/^/Happy Birthday To You/;h;G;p;s/To You/Dear sed/' <<< ''
Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear sed
Happy Birthday To You
homme au travail
la source
7
sedles réponses sont toujours gagnantes IMO :)
Digital Trauma
La réponse la plus courte semble être 51 octets, au lieu des 52 que vous avez énumérés
Taylor Scott
1
@TaylorScott, l'explication au sommet s'applique également à cela: “(1 caractère ajouté car il n'y a aucun moyen de le faire sedfonctionner sans entrée.)”.
manatwork
Ahh, c'est logique :)
Taylor Scott
30

C, 73 octets

main(c){for(;c-5;)printf("Happy Birthday %s\n",++c-4?"To You":"Dear C");}
VX
la source
Bogue insignifiant: devrait être i++-3. (Actuellement, le «Cher c» apparaît à la deuxième ligne.) (Si je n'utilisais qu'une seule variable, je la nommerais «c».)
manatwork
constante fixe, variable modifiée. Une idée pour raccourcir le code?
VX
Désolé, aucune idée de le raccourcir. C n'est pas ma force. (J'ai trouvé le bogue parce que même votre score actuel est si incroyable pour moi que je devais l'essayer.;))
manatwork
12
Ne devrait-il pas être "Dear C" (majuscule)?
TRiG
Les caractères d'interponction me manquent aussi ...
VX
27

Python, 61 60 59

H="\nHappy Birthday to You"
print(H*3)[:60]+"Dear Python"+H
Falko
la source
1
Vous pouvez économiser 1 octet - H="\nHappy Birthday to You"etprint(H*3)[:59]+" Dear Python"+H
Stretch Maniac
1
Est-ce que ce python est 2.7 ou 3?
George
2
@ George: Python 2.7, car il n'y a pas de crochets autour de l' printargument.
Falko
1
La sortie d'un interprète interactif compte-t-elle? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Threed
1
Vous pouvez en économiser un en supprimant l’espace précédent Dearet en le remplaçant 59par 60.
Threed
26

sh, 52

H()(echo Happy Birthday ${@-to You});H;H;H Dear sh;H
Trauma numérique
la source
3
Avec l' expansion des paramètres de valeur par défaut seulement 53 caractères: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
manatwork
Ooh très bon @manatwork!
Traumatismes numériques
2
Vous pouvez omettre les deux points dans le développement du paramètre - cela fonctionne si le paramètre n'a jamais été défini, tout en :-couvrant également les cas où il est défini mais vide
@professorfish Nice - merci, je ne le savais pas!
Digital Trauma
@DigitalTrauma Un bon endroit pour regarder si vous avez besoin d'enregistrer des caractères est wiki.bash-hackers.org/syntax/pe - il y a une liste de toutes les syntaxes d'extension des paramètres
22

ArnoldC , 228 octets

Laisse faire Arnold Schwarzenegger chant ...

IT'S SHOWTIME
TALK TO THE HAND "Happy Birthday to You"
TALK TO THE HAND "Happy Birthday to You"
TALK TO THE HAND "Happy Birthday Dear ArnoldC"
TALK TO THE HAND "Happy Birthday to You"
YOU HAVE BEEN TERMINATED

sortie:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear ArnoldC
Happy Birthday to you
Étais-je
la source
@squeamishossifrage lol, corrigé.
Wasi
16
Peut-être que vous pouvez ajouter un lisp Ahnold! Hahpy Birfdayréduit le nombre de caractères de 4.
Compass
19

Langage de programmation Shakespeare , 3429 octets

personne ne sera assez fou pour se lancer dans un challenge avec SPL, alors ...

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

A Happy Birth Day

Ajax, a hero
Ford, a man

          Act I: 1

          Scene I: 1

[Enter Ajax and Ford]

Ajax:
 You are nothing!

          Scene II: 2

Ford:
 Am I nicer than the sum of a big cow and a son?

Ajax:
 If so, we shall go to Scene V. You are as big as the sum of thyself and a cat!

          Scene III: 3

Ford:
 You are as red as the sum of a big red warm rich bold fair cat and a big rich fine son.
 Speak thy mind! You are as big as the sum of thyself and the sum of a cute fair fine
 rich cat and a hog! Speak thy mind! You are as big as the sum of thyself and the sum
 of a cute fair fine rich cat and a hog. Speak thy mind. Speak thy mind! You are as bold as
 the sum of thyself and the sum of a big fine fair cat and a cow. Speak thy mind! You are
 as big as a red old fair fine tiny cow. Speak thy mind! You are as old as the sum of
 thyself and the sum of a red old fair fine tiny cow and a big joy. Speak thy mind.
 You are as red as the sum of thyself and the sum of the sum of a red old fair fine
 tiny cow and a rich old red sky and a pig. Speak thy mind! You are as old as the sum
 of thyself and the sum of a big fine fair joy and a son. Speak thy mind. You are as
 red as the sum of thyself and a cute son. Speak thy mind! You are as cute as the sum
 of thyself and the sum of a bad fat vile pig and a fat bad lie. Speak thy mind! You are
 as fat as the sum of thyself and a vile evil war. Speak thy mind! You are as vile as the
 sum of thyself and the sum of a pig and a toad. Speak thy mind! You are as fair as the
 sum of thyself and the sum of a big fair hard fine son and a red fine fair joy. Speak
 thy mind! Are you as old as a big cow?

Ajax:
 If so, we shall go to Scene IV.

Ford:
 You are as big as a red old fair fine tiny cow. Speak thy mind! You are as old as the sum
 of thyself and the sum of the sum of a big red warm rich bold fair cat and a red old fair
 fine tiny cow and a bad hog. Speak thy mind! You are as big as the sum of thyself and the
 sum of a fat bad hog and a war. Speak thy mind! You are as big as a red old fair fine tiny
 cow. Speak thy mind! You are as old as the sum of thyself and the sum of a big red warm
 rich bold fair cat and a fat foul bad hog and a son. Speak thy mind. You are as fat as
 the sum of thyself and the sum of the sum of a big fair hard fine son and a big fine
 fair joy and a bad pig. Speak thy mind. 

Ajax:
 Let us return to Scene II.

          Scene IV: 4

Ford:
 You are as big as a red old fair fine tiny cow. Speak thy mind! You are as old as the
 sum of thyself and a big red warm rich bold fair cat and a warm sky. Speak thy mind.
 You are as fat as the sum of thyself and the sum of a red old fair fine tiny cow and a
 cat. Speak thy mind. You are as fat as the sum of thyself and a bad foul hog. Speak
 thy mind. You are as cute as the sum of thyself and the sum of a big fair hard fine
 son and a sky. Speak thy mind. You are as big as a red old fair fine tiny cow. Speak thy
 mind! You are as old as the sum of thyself and the sum of thyself and the sum of the sum
 of the sum of a red old fair fine tiny cow and a big fair hard fine son and a big joy and
 a son. Speak thy mind. You are as bad as the sum of thyself and the sum of a fat pig and a
 hog. Speak thy mind. You are as fat as the sum of thyself and a lazy pig. Speak thy mind.

Ajax:
 Let us return to Scene II.

          Scene V: 5

[Exeunt]

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, Ajaxet Fordapparaissent. 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 Ajaxdire Fordque 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 Fordest 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 écrivez Happy Birthday. Il y a un ifinté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 à écrire to 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 ...

Rodolfo Dias
la source
Je pense que vous devriez pouvoir répéter des mots, comme fat fat fat fat cat. De plus, j'utilise github.com/drsam94/Spl/blob/master/splc.py pour compiler mon code Spl .
Clamchowder314
16

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

puts h="Happy Birthday to You",h,h[0,15]+"Dear Ruby",h
Martin Ender
la source
16

Un amour pour PHP? 61 59 58 octets

$s="
Happy Birthday";echo$t="$s to You","$t$s Dear PHP$t";

Voyez-le en action @ http://sandbox.onlinephpfunctions.com/

MonkeyZeus
la source
1
Combinez l'attribution à $ t avec sa première sortie:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork
@manatwork excellente suggestion, merci!
MonkeyZeus
58
Non, il n'y a pas d'amour pour PHP. Déjà.
Faux nom
Même nombre d'octets avec les balises courtes:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius
1
Remplacez le \npar un saut de ligne afin de sauvegarder un caractère.
Christoph le
15

Je ne peux pas choisir une seule langue: /

BrainBack: 68

4 ["Happy birthday ">2 ->![<0 "to You
"]<[<0 "Dear BrainBack
"]<1 -]

BrainBack est un mélange de BrainFuck et de Forth, conçu pour un défi PCG 7 mars 2014

BrainFuck étendu : 79

{h|"Happy Birthday ">}{t|"to You
">}&h&t&h&t&h|"Dear Extended BrainFuck
">&h&t

L'anniversaire d'EBF est le 16 juillet 2010

Schéma: 96

(R5RS, Raquette, R6RS REPL)

(map(lambda(e)(display"Happy Birthday ")(display(if e "to You\n" "Dear Scheme\n")))'(1 1 #f 1))

Scheme est né en décembre 1975 (NB: PDF)

Zozotez : 96

((:'R(\(l)(p'|Happy birthday |())(p(?(a l)'|to You|'|Dear Zozotez|))(?(d l)(R(d l)))))'(t t()t))

Cependant, il est plus juste de le faire en français (86):

((:'A(\(l)(p'|Joyeux anniversaire|())(p(a l))(?(d l)(A(d l)))))'(, , | Zozotez,| |.|))

Sortie:

Joyeux anniversaire,
Joyeux anniversaire,
Joyeux anniversaire Zozotez,
Joyeux anniversaire.

L'anniversaire de Zozotez est le 19 juillet 2011

Sylwester
la source
4
+1 pour "Joyeux anniversaire, cher Extended Brainfuck", probablement le nom de langue le plus laborieux ici. Et pourtant, le programme est une fraction de la taille de l’équivalent pour la langue parente. Et pour Zozotez, qui sonne effectivement mieux en français, même si, en général, je n'aime pas beaucoup la façon dont les français écrivent le nom de la personne dans une ligne identique pour cette chanson.
Level River St
Dans votre réponse à Zozotez, cela devrait être Joyeux anniversaire à Zozotez.
Beta Decay
2
@BetaDecay Selon ma femme (française), cela ne devrait pas se faire. Wikipédia français accepte.
Sylwester
14

Le poisson mort ( 2610 2391 caractères)

Qu'est-ce que c'est ça? Un seul défi de sortie? On dirait que c'est un travail pour Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

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

Les erreurs ne sont pas reconnues: le shell ajoute simplement un caractère de nouvelle ligne!

alors nous pouvons jouer au golf jusqu'à 2391 car.

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

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.

Sp3000
la source
19
Pour certaines valeurs de "fun".
Charles Wood
13

JS, 83 octets

h="Happy Birthday to You\n",console.log(h,h,h.replace("to You\n","Dear")+" JS\n",h)

ou 79 octets par @Ingo Bürk

h="Happy Birthday ",t="to You\n",console.log(h+t,h+t,h+"Dear Javascript\n",h+t)

ou 71 octets par @kapep

console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)

ou exécutez sur la console cette page (42 octets)

eval($("#answer-39759 code:first").text())
l2aelba
la source
4
Aussi, c'est plus court: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(vous pouvez toujours utiliser promptpour économiser encore plus)
Ingo Bürk
11
LOL à la dernière pièce de code ..: D
Optimizer
1
76:t='to you\n';console.log(h='Happy birthday',t+h,t+h,'dear JavaScript\n'+h,t)
NinjaBearMonkey
1
71:console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)
kapex
3
alert à la place console.log, nécessite 2 crochets supplémentaires mais plus court: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65
11

R: 70 octets

Profite du pasterecyclage des vecteurs.

writeLines(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")))
bdzimmer
la source
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
germcd
@germcd Cela ne fonctionne pas tout à fait, car catajoute des espaces entre les chaînes. Donc, vous vous retrouvez avec un espace au début de chaque ligne sauf la première.
bdzimmer
write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 octets. Voici ma solution originale avec 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")Vector Recycling me bat encore une fois.
Vlo
Réduit à 66 octets `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") tio.run/##K/r/…
Nick Kennedy
11

T-SQL, 89 87 octets

Edit: 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 FROMclause multipliées par 3

SELECT STUFF('Happy Birthday to You  Dear SQL',N,8,'')FROM(VALUES(24),(24),(15),(24))S(N)
MickyT
la source
Celui-ci est sympa!
TLama
C'est une solution SQL brillante et une très belle astuce!
BradC
9

GNU dc, 51

[Happy Birthday to You]d[Happy Birthday Dear dc]rdf
Trauma numérique
la source
3
J'ai aussi essayé avec dc, mais même la version presque brute est plus courte: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 caractères.
manatwork
Aujourd'hui @manatwork :)
Digital Trauma
3
J'ai appris l'existence de la dc aujourd'hui grâce à cet article et il est excellent.
Caleb Paul
9

Perl - 58

say"Happy Birthday ".($_?"Dear Perl":"To You")for(0,0,1,0)

Courir avec:

perl -E'say"Happy Birthday ".($_?"Dear Perl":"To You")for(0,0,1,0)'

Juste pour le fun:

perl -E'for(<HappyBirthday{0,1,2,3}>){s/B/ B/;s/2/ Dear Perl\n/;print s/\d/ To You\n/r}'
hmatt1
la source
6
Que diriez- say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]vous
core1024
@ core1024 Je ne savais pas que vous pouviez faire cela avec des tableaux, c'est génial. N'hésitez pas à poster comme votre propre réponse!
hmatt1
8

Python 507 octets

impression """
H ap py- bir e jour-à-v ous = heureux - b irt hday
- à - Y ous = H appy - Anniversaire - D e
ar-P ython = Ha ppy - Bir t hda y -to- Y o uHapp y -
Anniversaire - à - Vous ou = H app
y - Jour de naissance-à-Y ou = H a ppy - B ir
"" ".replace (" \ n "," "). replace (" "," "). replace (" - "," ") .replace (" = "," \ n ") [: 92]

Ne pas gagner de prix ... mais si vous le regardez attentivement, il y a de l'art ASCII:

# # # ### ### # # ### ##### ### ##### # # ### # # # #
# # # # # # # # # # # # # # # # # # # # # # # # #
#### ##### ### ### # ### # ### # #### # # ##### # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # ### ##### # # # # # ### # # # #
Alex
la source
Ce n'est pas un concurrent sérieux.
Esolanging Fruit
3
@ Challenger5 Oui, "Cependant, je récompense également les autres propositions spirituelles par des votes positifs (et j'encourage tout le monde à le faire également). Par conséquent, bien qu'il s'agisse d'un concours de code-golf, les réponses pas très courtes sont également les bienvenues. . "
Alex
7

PowerShell - 69 64 59

1,1,0,1|%{"Happy Birthday "+("Dear $ShellId","To You")[$_]}

et 91

$a,$b,$c="Happy Birthday.To You.Dear PowerShell".Split(".");1..2|%{"$a $b"};"$a $c";"$a $b"

et 108

$a=@();$b,$c="To You.Dear PowerShell".Split(".");1..4|%{$a+="Happy Birthday $b"};$a[2]=$a[2]-replace$b,$c;$a
SomeShinyObject
la source
6

Ruby, 56 ans

x="Happy Birthday To You
"*4
x[59,6]="Dear Ruby"
puts x
britishtea
la source
Ne pouvez-vous pas les choses en ligne?
Optimiseur
2
Une méthode se terminant par =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).
britishtea
1
> Newlines dans les chaînes. Ok, maintenant je suis complètement convaincu que le rubis est juste de la magie vaudou et qu'en tant que paysan, je devrais plutôt m'en tenir au python.
sagiksp
6

Marbelous , 151

Happy BirthdayChaque impression hbest appelée, avec to youou Dear Marbelousajouté, en fonction de l’entrée 0ou 1. La bille passée hbne sera pas sortie car elle restera coincée dans le synchroniseur &0.

03
00
02
01
hb
:hb
}0
=0&0
&1
&2//
746F20596F7544656172204D617262656C6F75730A
&0&0&0&0&0&0&1&1&1&1&1&1&1&1&1&1&1&1&1&1&2
486170707920426972746864617920

Ci-dessous se trouve le tableau hb, avec l'hex converti en texte ASCII: entrez la description de l'image ici

es1024
la source
5

CJam, 46 octets

4,{"Happy Birthday "\2="Dear CJam""to You"?N}%

Essayez ici.

4,                                             "Push [0,1,2,3].";
  {                                         }% "Map...";
   "Happy Birthday "                           "Push the string.";
                    \                          "Swap top two stack elements (string and
                                                array element)";
                     2=                        "Check equality with 2.";
                       "Dear CJam""to You"     "Push two more strings.";
                                          ?    "Select string based on result of 2=.";
                                           N   "Push a line break";

Cela laisse le tableau suivant sur la pile:

["Happy Birthday " "to You" "\n" "Happy Birthday " "to You" "\n" "Happy Birthday " "Dear CJam" "\n" "Happy Birthday " "to You" "\n"]

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:

4{"Happy Birthday "I2="Dear CJam""to You"?N}fI
Martin Ender
la source
5
Menteur!! votre langue préférée est Ruby / Mathematica: P
Optimizer
1
@Optimizer Certainement pas Ruby, peut-être Mathematica, mais je n'en suis même pas sûr. Pour une "vraie" programmation, je choisirais probablement toujours C / C ++ / C #. (Je suis aussi à peu près sûr que le vôtre est JS: P.)
Martin Ender
5
tu m'as eu: P: D
Optimiseur
5

Haskell: 75

h="Happy Birthday "
y=h++"to You"
main=mapM_ print[y,y,h++"Dear Haskell",y]

Sortie de code dans ideone

Haskell une doublure: 79

mapM_ print["Happy Birthday "++if x==3then"Dear Haskell"else"to You"|x<-[1..4]]

Vous pouvez essayer le one liner en ligne ici: http://tryhaskell.org/


la source
1
Un doublure qui enlève un personnage:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking
liste compréhensions soooo loooonnnnggggg
Alex Reinking
2
aussi, techniquement, il devrait être putStrLnconforme à la spécification (vous obtenez des guillemets doubles print)
Alex Reinking
2
Le _n'est pas nécessaire car la valeur de retour de main est supprimée - vous ne la voyez que dans GHCi
fier haskeller
5

Var'aQ - 121

"Happy Birthday " ~ a cher "to you\n" tlheghrar ~ b cher b tlheghrar a "dear Var'aQ" tlheghrar tlheghrar b tlheghrar cha'
Beta Decay
la source
1
Qapla '! +1 pour utiliser Var'aQ de toutes les langues!
WallyWest
5

GolfScript: 54 caractères

4,{"Happy Birthday "["To You""Dear GolfScript"]@2==n}%

Échantillon échantillon:

bash-4.3$ golfscript.rb <<< '4,{"Happy Birthday "["To You""Dear GolfScript"]@2==n}%'
Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear GolfScript
Happy Birthday To You
homme au travail
la source
Je viens de le remarquer. (Petit effet secondaire d'essayer d'écrire ce code GolfScript pendant environ 5 à 6 heures.) Merci, @ MartinBüttner.
Manatwork
1
Joyeux anniversaire Cher CodeGolf ?
Dennis
Grr. J'étais fatigué non seulement quand je l'ai écrit, mais aussi quand je l'ai corrigé. Merci @Dennis.
Manatwork
5

T-SQL (compatible MS): 75

print stuff(replicate('Happy Birthday to You '+char(10),4),62,6,'Dear SQL')
Kyle Hale
la source
Bien
Bonne idée! Économisez 9 octets supplémentaires en les remplaçant +char(10)par un saut de ligne dans la citation, créez simplement la partie retour de la chaîne.
BradC
5

C # (75) (73)

Utilisation System.Diagnosticsdans le but deDebug.Print

Mettre à niveau vers le code @Abbas

string x="\nHappy Birthday ",y=x+"to You";Debug.Print(y+y+x+"Dear C#"+y);

Passer à @Tyress 'code (83) (76)

for(int i=0;i++<4;)Debug.Print("Happy Birthday "+(i!=3?"to You":"Dear C#"));

Sortie:

Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear C#
Happy Birthday To You
Maître mick
la source
2
Vous pouvez enregistrer quelques caractères à l’aide de String.Formatl’opérateur ternaire. Vous pouvez également faire en sorte que cela ressemble beaucoup moins à un programme C # et à l’utiliser i++<3; p
FryAmTheEggman