Singe Happy Birthday in deiner Lieblingsprogrammiersprache

119

Ihre Lieblingsprogrammiersprache hat gerade Geburtstag gehabt. Sei nett und singe das Happy Birthday- Lied.

Natürlich sollten Sie dies erreichen, indem Sie ein Programm in dieser Sprache schreiben. Das Programm nimmt keine Eingabe an und schreibt den folgenden Text in die Standardausgabe oder eine beliebige Datei:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear [your favourite programming language]
Happy Birthday to You

Sie sollten den Teil in Klammern ersetzen (und die Klammern weglassen).

Dies ist ein Code Golf - der kürzeste Code gewinnt.

AKTUALISIEREN

Ich bin froh, dass die Frage großes Interesse geweckt hat. Lassen Sie mich einige zusätzliche Informationen über die Wertung hinzufügen. Wie ursprünglich angegeben, handelt es sich bei dieser Frage um einen Code-Golf, sodass der kürzeste Code gewinnen wird. Der Gewinner wird Ende dieser Woche (19. Oktober) ermittelt.

Ich belohne aber auch andere witzige Einsendungen mit Gegenstimmen (und ich ermutige alle, dies auch zu tun). Obwohl dies ein Code-Golf-Wettbewerb ist, sind auch nicht so kurze Antworten willkommen.

Ergebnisse

Herzlichen Glückwunsch an Optimizer , den Gewinner dieses Wettbewerbs mit seiner 42 Byte langen CJam- Einreichung .

David Frank
quelle
2
Können wir den Namen der Programmiersprache als ein Byte zählen, weil es nur für Leute fair erscheint, die in einer langatmigen Sprache wie JavaScript codieren, im Gegensatz zu jemandem, der dies in C tut. Wir suchen wirklich die kreativste Logik, oder?
MonkeyZeus
14
Warum alle Upvotes dafür trotz aller Downvotes für das Bonbon-Lied ? Das ist genauso langweilig wie eine Herausforderung.
Xnor
10
Ich sollte wahrscheinlich erwähnen, dass das Lied urheberrechtlich geschützt ist und das Verteilen dieser Programme einen DMCA
Ratschenfreak
4
Mindestens eine der Antworten gibt eine führende Zeile aus. Ist das erlaubt
Dennis

Antworten:

47

CJam, 46 42 Bytes

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

Wie es funktioniert:

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

Dies lässt den Stapel wie folgt am Ende des Codes:

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

die automatisch gedruckt werden, um als auszugeben

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

Probieren Sie es hier aus (Kopieren Sie den Code und führen Sie ihn aus)

Optimierer
quelle
1
kommen die "ersten 15 Zeichen" vom F? kennt es so die nummer 15?
Vijrox
1
Ja, af sind 10-15.
Jacob
122

LOLCODE: 109 (105 mit "korrekter" Schreibweise)

LOLCODE ist keine großartige Sprache zum Golfen, zumal Sie die Schönheit und Ausdruckskraft verlieren, wenn Sie den Code verkürzen.

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

Teste es mit loljs

Dies ist meine bevorzugte Wiedergabe mit einem Gewicht von 187 Zeichen (Leerzeichen zur Verdeutlichung hinzugefügt):

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
Ich habe Alien alarmiert
quelle
15
Ich wusste nur, dass es eine LOLCODE-Antwort darauf geben würde. Übrigens, können Sie auch in Kwotez schreiben? KTHXBYE.
Level River St
2
Ich habe vor einiger Zeit versucht, eine LOLCODE-Antwort auf eine andere Herausforderung zu schreiben, aber es ist zu ausführlich für Code-Golf, und es fehlen anständige Datenstrukturen und die Fähigkeit, komplexe Funktionen zu erstellen, so dass meine Bemühungen eher begrenzt sind!
Ich habe Alien
3
Diese Antwort gab mir den Drang, LOCODE herunterzuladen und es tatsächlich richtig zu lernen.
Pharap
2
Das ist toll!!
AStopher
89

Mathematica-Barcode-Geburtstagswünsche - viel zu viele Bytes

Dadurch werden die Verse gedruckt und vorgelesen.

alles Gute zum Geburtstag

Alles
Gute zum Geburtstag
Alles Gute zum Geburtstag Alles Gute zum Geburtstag Liebe Mathematica
Alles Gute zum Geburtstag

StringReplaceErsetzt jedes Komma durch eine NewLine. Barcodes dürfen keine Steuerzeichen enthalten.

DavidC
quelle
13
Ich kann keine Barcode-Taste auf meiner Tastatur sehen! Wie kann ich das testen?
Matsjoyce
17
Ich finde es toll, dass 10der Barcode (unten rechts) einen enthält, BarcodeRecognizeder in Mathematica 10 eingeführt wurde. ^^
Martin Ender,
Ja! Ich hatte das nicht bemerkt.
DavidC
11
Ich habe das tatsächlich mit einem QR-Code-Leser gescannt. Nach jedem Komma stehen zusätzliche Leerzeichen. Könnten Sie nicht Bytes speichern, wenn Sie - oh, warten Sie. Keine Ursache.
Timwi
55

TI-Basic, 53 Bytes

Nun, da jeder seine Lieblingsprogrammiersprache veröffentlicht, kann ich auch einen meiner alten Favoriten hinzufügen. Ich habe über die Jahre viel Zeit damit verbracht, Befehle in ein Fenster zu schreiben, das halb so groß ist wie ein Smartphone.

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

Mein Taschenrechner unterstützt keine Kleinbuchstaben, und die einzigen Variablen, die Zeichenfolgen sein können, sind Str1, Str2 usw.

Stretch Maniac
quelle
Welcher Geschmack von TI-Basic? Ich habe es auf dem TI-84 sehr gut kennengelernt.
Jesan Fafon
7
Immer schön, TI-Basic zu sehen. Dies scheint Standard 8x TI-Basic zu sein, bei dem alle Ausdrücke automatisch in Ans gespeichert werden. Dies kann eine seltsame und schwer zu verfolgende Optimierungsstrategie sein. Ich habe auch angefangen, mit dieser großartigen Sprache zu programmieren.
Codebreaker
4
Hinweis für Redakteure: Können Sie Änderungen (in diesem Fall 8 Zeichen weniger) in den Kommentaren veröffentlichen, anstatt sie nur zu bearbeiten? Das würde mir das Gefühl geben, dass dies immer noch meine Antwort ist.
Stretch Maniac
2
+1 !! so habe ich auch programmieren gelernt. Ich habe Tron für den TI-83: ​​D gebaut, aber es war ziemlich langsam, also kein Spaß.
Nacht
2
Haha, das ist großartig. Ich habe ein Blackjack-Spiel für den TI-83 gemacht. Dabei habe ich alle Regeln von Blackjack sehr genau gelernt.
Thomasrutter
44

Sed, 60 55 Bytes

(1 Zeichen hinzugefügt, da es keine Möglichkeit gibt, sedohne Eingabe zu arbeiten.)

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

Mit Sicherheit kein Gewinner, gepostet, um seddie seltene s///Eigenschaft zu demonstrieren , nur das n- te Vorkommen zu ersetzen .

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 (kürzer, aber nicht interessant): 52 Zeichen

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

Probelauf:

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
Mann bei der Arbeit
quelle
7
sedAntworten sind immer Gewinner IMO :)
Digital Trauma
Die kürzere Antwort scheint 51 Bytes zu sein, anstatt der 52, die Sie aufgelistet haben
Taylor Scott
1
@ TaylorScott, die Erklärung oben galt auch dort: "(1 Zeichen hinzugefügt, weil es keine Möglichkeit gibt, sedohne Eingabe zu arbeiten.)".
Manatwork
Ahh, das macht Sinn :)
Taylor Scott
30

C 73 Bytes

main(c){for(;c-5;)printf("Happy Birthday %s\n",++c-4?"To You":"Dear C");}
VX
quelle
Unbedeutender Fehler: sollte sein i++-3. (Derzeit erscheint in der 2. Zeile das „Dear c“.) (Bei Verwendung einer einzelnen Variablen würde ich es als „c“ bezeichnen.)
manatwork
konstant fest, variabel geändert. Irgendeine Idee, den Code zu verkürzen?
VX
Sorry, keine Ahnung, es zu verkürzen. C ist nicht meine Stärke. (Ich habe den Fehler gefunden, weil selbst Ihre aktuelle Punktzahl für mich so unglaublich ist, dass ich sie ausprobieren musste.;))
manatwork
12
Sollte es nicht "Dear C" (Großbuchstaben) sein?
TRiG
Ich vermisse auch die Zwischenzeichen dort ...
VX
27

Python, 61 60 59

H="\nHappy Birthday to You"
print(H*3)[:60]+"Dear Python"+H
Falko
quelle
1
Sie können 1 Byte speichern - H="\nHappy Birthday to You"undprint(H*3)[:59]+" Dear Python"+H
Stretch Maniac
1
Ist das Python 2.7 oder 3?
George
2
@ George: Python 2.7, da es keine Klammern um das printArgument gibt.
Falko
1
Zählt die Ausgabe eines interaktiven Interpreters? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Donnerstag,
1
Sie können durch das Entfernen der Raum ein mehr sparen vor Dearund Wechsel 59zu 60.
Threed
26

sh, 52

H()(echo Happy Birthday ${@-to You});H;H;H Dear sh;H
Digitales Trauma
quelle
3
Mit Standardwert Parameter Expansion nur 53 Zeichen: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
Manatwork
Ooh, sehr gutes @manatwork!
Digital Trauma
2
Sie können den Doppelpunkt in der Parameter Expansion auslassen - das , wenn der Parameter arbeitet wurde nie eingestellt, während :-auch Fälle abdeckt , wenn es gesetzt ist , aber leer
@professorfish Schön - danke, das wusste ich nicht!
Digital Trauma
@DigitalTrauma Ein guter Ort, um nachzusehen, ob Sie Zeichen speichern müssen, ist wiki.bash-hackers.org/syntax/pe - es gibt eine Liste aller Parametererweiterungssyntax
22

ArnoldC , 228 Bytes

Lassen wir Arnold Schwarzenegger singen ...

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

Ausgabe:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear ArnoldC
Happy Birthday to you
War ich
quelle
@squeamishossifrage lol, behoben.
Wasi
16
Vielleicht kannst du ein Ahnold-Lispel hinzufügen! Hahpy BirfdayReduziert die Anzahl der Charaktere um 4.
Compass
19

Shakespeare-Programmiersprache , 3429 Bytes

niemand wird so wahnsinnig sein, dass er mit SPL an einer Herausforderung teilnehmen kann, also ...

Meine eigenen Worte vor einer Weile. Und doch war jemand so wahnsinnig, es zu tun. Ja Ja ich weiss. Zu viele Bytes. Aber SPL verdient es, hier aufgenommen zu werden, denke ich. Und glauben Sie mir, ich habe eine gewaltige Anstrengung unternommen, um dieses Programm zu "golfen", weshalb es sich ein bisschen wiederholt und zumeist die gleichen Wörter verwendet (ich hätte immer dem Vorschlag von DLosc folgen können , aber das wäre selbst für mich zu extrem). .

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]

Was bedeutet das alles?

OK, wenn Sie neugierig sind, wie das alles funktionieren soll, lassen Sie mich versuchen, meine Argumentation zu erklären. Erstens die Variablen. Sie müssen aus shakesperianischen Stücken stammen, und da die Anzahl der Zeichen wichtig ist, müssen wir die kleinen auswählen. so Ajaxund Forderscheinen. Sie benötigen eine Beschreibung, nachdem sie deklariert wurden (was ignoriert wird, aber immer noch). Ich hätte einen einzigen Brief gebrauchen können, aber heh.

Akt I, Szene I

var Ajax, Ford; Ford = 0;

Wir bringen die Variablen auf die Bühne und lassen Ajaxsagen, Forddass sein Wert 0 sein wird.

Akt I, Szene II

if (Ford > 2*1+1) goto Scene V; Ford = Ford + 1;

OK, wenn der in gespeicherte Wert Fordgrößer als 3 ist, springt das Programm zu Szene V; Andernfalls wird der Wert inkrementiert.

Akt I, Szene 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;

Lasten und Lasten von Linien. Die Idee ist, mit dem gespeicherten Wert zu fummeln Ford, viele arithmetische Operationen auszuführen, um die ASCII-Nummer der gewünschten Buchstaben zu erhalten, und dann den Compiler anzuweisen, die Nummer in Zeichenform auszugeben. So schreibst du Happy Birthday. Es gibt eine ifinnere Szene: Die Idee ist zu überprüfen, ob dies die dritte Phrase des Songs ist; wenn ja, springen wir zu Szene IV; ansonsten machen wir weiter, um zu schreiben to You. Danach springen wir zurück zu Szene II.

Akt I, Szene 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;

Die Art und Weise, wie dies funktioniert, ähnelt der obigen Szene: Die Idee ist, zu schreiben Dear SPL.

Akt I, Szene V

End.

Genau so.

Ich habe leider noch keinen Ort gefunden, an dem dies getestet werden kann ...

Rodolfo Dias
quelle
Ich denke, Sie sollten in der Lage sein, Wörter wie zu wiederholen fat fat fat fat cat. Außerdem benutze ich github.com/drsam94/Spl/blob/master/splc.py , um meinen Spl-Code zu kompilieren.
Clamchowder314
16

Ruby, 54 Bytes

Ich dachte nur "Hey, es gibt noch keine Ruby-Antwort", aber dann erschien eine ein paar Sekunden vor dieser. Naja...

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

Haben Sie eine Vorliebe für PHP? 61 59 58 Bytes

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

Sehen Sie es in Aktion @ http://sandbox.onlinephpfunctions.com/

MonkeyZeus
quelle
1
Kombiniere die Zuweisung zu $ ​​t mit seiner ersten Ausgabe:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork
@manatwork ausgezeichneter Vorschlag, danke!
MonkeyZeus
58
Nein, es gibt keine Liebe für PHP. Je.
Fake Name
Gleiche Anzahl von Bytes mit kurzen Tags:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius
1
Ersetzen Sie die \ndurch einen tatsächlichen Zeilenumbruch, um ein Zeichen zu sparen.
Christoph
15

Ich kann mich einfach nicht für eine Sprache entscheiden: /

BrainBack: 68

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

BrainBack ist eine Mischung aus BrainFuck und Forth, die für eine PCG-Herausforderung am 7. März 2014 entwickelt wurde

Extended BrainFuck : 79

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

EBF hat am 16. Juli 2010 Geburtstag

Schema: 96

(R5RS, Schläger, R6RS REPL)

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

Schema wurde im Dezember 1975 geboren (NB: PDF)

Zozotez : 96

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

Es fühlt sich jedoch besser an, dies auf Französisch zu tun (86):

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

Ausgabe:

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

Zozotez hat am 19. Juli 2011 Geburtstag

Sylwester
quelle
4
+1 für "Alles Gute zum Geburtstag lieber Extended Brainfuck", den wohl mühsamsten Sprachnamen hier. Dabei ist das Programm nur ein Bruchteil der Größe des Äquivalents für die übergeordnete Sprache. Und für Zozotez, das in der Tat besser auf Französisch klingt, obwohl ich im Allgemeinen nicht besonders mag, wie die Franzosen den Namen der Person in eine identische Zeile für dieses Lied pressen.
Level River St
In deiner Antwort von Zozotez sollte es so sein Joyeux anniversaire à Zozotez.
Beta Decay
2
@BetaDecay Laut meiner (französischen) Frau sollte es ohne solche Präposition sein. Die französische Wikipedia stimmt zu.
Sylwester
14

Toter Fisch ( 2610 2391 Zeichen)

Was ist das? Eine Ausgabe nur Herausforderung? Klingt so, als wäre es ein Job für Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

Da Deadfish nur Ganzzahlen ausgibt, gibt der obige Code leider die ASCII-Darstellungen der einzelnen Zeichen im Song aus.

Wenn wir die Spezifikation verwenden, dass

Fehler werden nicht quittiert: Die Shell fügt einfach ein Newline-Zeichen hinzu!

dann können wir das bis auf 2391 Zeichen Golf spielen:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

Hinweis: Deadfish ist eigentlich nicht meine Lieblingssprache, aber ich konnte nicht widerstehen: P. Auch Golfen in Deadfish ist ein lustiges Rätsel für sich.

Sp3000
quelle
19
Für bestimmte Werte von "Spaß".
Charles Wood
13

JS, 83 Bytes

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

oder 79 Bytes von @Ingo Bürk

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

oder 71 Bytes von @kapep

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

oder auf der Konsole diese Seite ausführen (42 Bytes)

eval($("#answer-39759 code:first").text())
l2aelba
quelle
4
Dies ist auch kürzer: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(Sie können immer noch verwenden prompt, um noch mehr zu speichern)
Ingo Bürk
11
LOL am letzten Codestück ..: 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 statt console.log, benötigt 2 weitere Klammern, ist aber kürzer: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65 14.10.14
11

R: 70 Bytes

Nutzt pasteund Vektor-Recycling.

writeLines(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")))
bdzimmer
quelle
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
Germcd
@germcd Das funktioniert nicht ganz, da catLeerzeichen zwischen den Zeichenfolgen eingefügt werden . Am Anfang jeder Zeile steht also ein Leerzeichen, mit Ausnahme des ersten.
BDZIMMER
write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 Bytes. Hier ist meine ursprüngliche Lösung mit 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")Vector Recycling schlägt mich wieder.
Vlo
Reduziert auf 66 Bytes `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") tio.run/##K/r/…
Nick Kennedy
11

T-SQL, 89 87 Bytes

Bearbeiten: Sollte wahrscheinlich nicht diese alten Dinge ausgraben, aber ich habe gerade eine offensichtliche Änderung bemerkt, um ein paar Bytes zurückzugewinnen.

Wenn Sie mit STUFF unerwünschte Teile der Zeichenfolge entfernen, wird der Startindex durch die Werte in der FROMKlausel multipliziert mit 3 bereitgestellt

SELECT STUFF('Happy Birthday to You  Dear SQL',N,8,'')FROM(VALUES(24),(24),(15),(24))S(N)
MickyT
quelle
Dieser ist schön!
TLama 20.10.14
Dies ist eine brillante SQL-Lösung und ein sehr schöner Trick!
BradC
9

GNU DC, 51

[Happy Birthday to You]d[Happy Birthday Dear dc]rdf
Digitales Trauma
quelle
3
Ich habe es auch mit probiert dc, aber auch die fast rohe Version ist kürzer: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 Zeichen.
Manatwork
Heute geht es los @manatwork :)
Digitales Trauma
3
Ich habe durch diesen Beitrag von der Existenz von DC heute erfahren und es ist exzellent.
Caleb Paul
9

Perl - 58

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

Laufen mit:

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

Nur zum Spaß:

perl -E'for(<HappyBirthday{0,1,2,3}>){s/B/ B/;s/2/ Dear Perl\n/;print s/\d/ To You\n/r}'
hmatt1
quelle
6
Wie wäre es say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024
@ core1024 Ich wusste nicht, dass man das mit Arrays machen kann, das ist großartig. Fühlen Sie sich frei, als Ihre eigene Antwort zu posten!
hmatt1
8

Python 507 Bytes

drucken """
H ap py- Bir th day-to-Y ou = Happy - Geburtstag
- bis - Sie = H appy - B irthday - D e
ar-P ython = Ha ppy - Bir t hda y -to- Y o uHapp y -
B irthday - to - Y ou = H App
y - B irth day-to-Y ou = H a ppy - B ir
"" .replace ("\ n", ""). replace ("", "). replace (" - ",") .replace ("=", "\ n") [: 92]

Keine Preise zu gewinnen ... aber wenn Sie genau hinschauen, gibt es einige ASCII-Kunstwerke:

# # # ### ### # # ### ##### ### ##### # # ### # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
#### ##### ### ### # ### # ### # #### # # ##### # #
# # # # # # # # # # # # # # # # # #
# # # # # # # ### ##### # # # # ### # # # #
Alex
quelle
Dies ist kein ernstzunehmender Anwärter.
Esolanging Fruit
3
@ Challenger5 Ja, "Ich belohne jedoch auch andere witzige Einsendungen mit Gegenstimmen (und ich ermutige alle, dies auch zu tun). Obwohl dies ein Code-Golf-Wettbewerb ist, sind auch nicht so kurze Antworten willkommen . "
Alex
7

PowerShell - 69 64 59

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

und 91

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

und 108

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

Rubin, 56

x="Happy Birthday To You
"*4
x[59,6]="Dear Ruby"
puts x
britishtea
quelle
Können Sie nicht Dinge inline?
Optimierer
2
Eine Methode, die auf endet, gibt =immer das Ergebnis des Ausdrucks nach dem Gleichheitszeichen zurück. Wenn ich dies einfüge, würde es nur drucken "Dear Ruby"( String#[]=ist eine Methode).
britishtea
1
> Zeilenumbrüche in Zeichenketten. Okay, jetzt bin ich vollkommen davon überzeugt, dass Rubin nur Voodoo-Magie ist, und als Bauer sollte ich mich stattdessen an Python halten.
Sagiksp
6

Marbelous , 151

Wird bei Happy Birthdayjedem hbAufruf entweder mit to youoder Dear Marbelousangefügt gedruckt, je nachdem, ob die Eingabe 0oder ist 1. Der übergebene Marmor hbwird nicht ausgegeben, da er im Synchronisator stecken bleibt &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

Unten ist die Tafel hbmit hexadezimaler Umwandlung in ASCII-Text: Bildbeschreibung hier eingeben

es1024
quelle
5

CJam, 46 Bytes

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

Probieren Sie es hier aus.

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

Dadurch bleibt das folgende Array auf dem Stapel:

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

Dessen Inhalt wird am Ende des Programms automatisch hintereinander gedruckt.

Alternativ mit einer for-Schleife und der gleichen Zeichenanzahl:

4{"Happy Birthday "I2="Dear CJam""to You"?N}fI
Martin Ender
quelle
5
Lügner!! Ihre Lieblingssprache ist Ruby / Mathematica: P
Optimizer
1
@Optimizer Sicher nicht Ruby, vielleicht Mathematica, aber da bin ich mir nicht mal sicher. Für "echte" Programmierung würde ich wahrscheinlich immer C / C ++ / C # wählen. (Ich bin mir auch ziemlich sicher, dass Sie JS: P sind.)
Martin Ender
5
Du hast mich: P: D
Optimizer
5

Haskell: 75

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

Codeausgabe in ideone

Haskell Einzeiler: 79

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

Sie können den Einzeiler hier online testen: http://tryhaskell.org/


quelle
1
Ein Einzeiler, der einen Charakter abschabt:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking
Listenverständnisse sind soooo loooonnnnggggg
Alex Reinking
2
Außerdem sollte es technisch putStrLnder Spezifikation entsprechen (Sie erhalten doppelte Anführungszeichen mit print)
Alex Reinking
2
Das _wird nicht benötigt, weil der Rückgabewert von main weggeworfen wird - man sieht es nur in GHCi
proud haskeller 18.10.14
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-Zerfall
quelle
1
Qapla! +1 für die Verwendung von Var'aQ aller Sprachen!
WallyWest
5

GolfScript: 54 Zeichen

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

Probelauf:

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
Mann bei der Arbeit
quelle
Ich habe es gerade bemerkt. (Wenig Nebeneffekt beim Versuch, diesen GolfScript-Code für etwa 5 bis 6 Stunden zu schreiben.) Danke, @ MartinBüttner.
Manatwork
1
Alles Gute zum Geburtstag Lieber CodeGolf ?
Dennis
Grr. Ich war nicht nur müde, als ich es schrieb, sondern auch, als ich es reparierte. Danke @Dennis.
Manatwork
5

T-SQL (MS-konform): 75

print stuff(replicate('Happy Birthday to You '+char(10),4),62,6,'Dear SQL')
Kyle Hale
quelle
Netter ... wünschte, ich hätte daran gedacht :)
MickyT
Großartige Idee! Sparen Sie 9 weitere Bytes, indem Sie +char(10)das Anführungszeichen durch einen Zeilenumbruch ersetzen. Machen Sie einfach den Rückgabeteil der Zeichenfolge.
BradC
5

C # (75) (73)

Verwendung System.Diagnosticszum Zwecke vonDebug.Print

Upgrade auf @Abbas 'Code

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

Upgrade auf @ Tyress 'Code (83) (76)

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

Ausgabe:

Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear C#
Happy Birthday To You
Meister Mick
quelle
2
Sie können einige Zeichen mit String.Formatund dem ternären Operator speichern . Sie können auch dafür sorgen, dass dies weniger wie ein C # -Programm i++<3
aussieht