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 .
quelle
Antworten:
CJam,
4642 BytesWie es funktioniert:
Dies lässt den Stapel wie folgt am Ende des Codes:
die automatisch gedruckt werden, um als auszugeben
Probieren Sie es hier aus (Kopieren Sie den Code und führen Sie ihn aus)
quelle
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.
Teste es mit loljs
Dies ist meine bevorzugte Wiedergabe mit einem Gewicht von 187 Zeichen (Leerzeichen zur Verdeutlichung hinzugefügt):
quelle
Mathematica-Barcode-Geburtstagswünsche - viel zu viele Bytes
Dadurch werden die Verse gedruckt und vorgelesen.
StringReplace
Ersetzt jedes Komma durch eine NewLine. Barcodes dürfen keine Steuerzeichen enthalten.quelle
10
der Barcode (unten rechts) einen enthält,BarcodeRecognize
der in Mathematica 10 eingeführt wurde. ^^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.
Mein Taschenrechner unterstützt keine Kleinbuchstaben, und die einzigen Variablen, die Zeichenfolgen sein können, sind Str1, Str2 usw.
quelle
Sed,
6055 Bytes(1 Zeichen hinzugefügt, da es keine Möglichkeit gibt,
sed
ohne Eingabe zu arbeiten.)Mit Sicherheit kein Gewinner, gepostet, um
sed
die seltenes///
Eigenschaft zu demonstrieren , nur das n- te Vorkommen zu ersetzen .Sed (kürzer, aber nicht interessant): 52 Zeichen
Probelauf:
quelle
sed
Antworten sind immer Gewinner IMO :)sed
ohne Eingabe zu arbeiten.)".C 73 Bytes
quelle
i++-3
. (Derzeit erscheint in der 2. Zeile das „Dear c“.) (Bei Verwendung einer einzelnen Variablen würde ich es als „c“ bezeichnen.)Python,
616059quelle
H="\nHappy Birthday to You"
undprint(H*3)[:59]+" Dear Python"+H
print
Argument gibt.h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Dear
und Wechsel59
zu60
.sh, 52
quelle
H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H
.:-
auch Fälle abdeckt , wenn es gesetzt ist , aber leerArnoldC , 228 Bytes
Lassen wir Arnold Schwarzenegger singen ...
Ausgabe:
quelle
Invalid input '\', expected '"' (line 2, pos 40)
Hahpy Birfday
Reduziert die Anzahl der Charaktere um 4.APL (48)
quelle
↑'Happy birthday '∘,¨⌽4⍴3⍴'to you' 'dear APL'
Shakespeare-Programmiersprache , 3429 Bytes
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). .
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
Ajax
undFord
erscheinen. 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
Ajax
sagen,Ford
dass 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
Ford
größ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 duHappy Birthday
. Es gibt eineif
innere 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 schreibento 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 ...
quelle
fat fat fat fat cat
. Außerdem benutze ich github.com/drsam94/Spl/blob/master/splc.py , um meinen Spl-Code zu kompilieren.Ruby, 54 Bytes
Ich dachte nur "Hey, es gibt noch keine Ruby-Antwort", aber dann erschien eine ein paar Sekunden vor dieser. Naja...
quelle
Haben Sie eine Vorliebe für PHP?
615958 BytesSehen Sie es in Aktion @ http://sandbox.onlinephpfunctions.com/
quelle
$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
durch einen tatsächlichen Zeilenumbruch, um ein Zeichen zu sparen.Ich kann mich einfach nicht für eine Sprache entscheiden: /
BrainBack: 68
BrainBack ist eine Mischung aus BrainFuck und Forth, die für eine PCG-Herausforderung am 7. März 2014 entwickelt wurde
Extended BrainFuck : 79
EBF hat am 16. Juli 2010 Geburtstag
Schema: 96
(R5RS, Schläger, R6RS REPL)
Schema wurde im Dezember 1975 geboren (NB: PDF)
Zozotez : 96
Es fühlt sich jedoch besser an, dies auf Französisch zu tun (86):
Ausgabe:
Zozotez hat am 19. Juli 2011 Geburtstag
quelle
Joyeux anniversaire à Zozotez
.Toter Fisch (
26102391 Zeichen)Was ist das? Eine Ausgabe nur Herausforderung? Klingt so, als wäre es ein Job für Deadfish !
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
dann können wir das bis auf 2391 Zeichen Golf spielen:
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.
quelle
JS, 83 Bytes
oder 79 Bytes von @Ingo Bürk
oder 71 Bytes von @kapep
oder auf der Konsole diese Seite ausführen (42 Bytes)
quelle
h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)
(Sie können immer noch verwendenprompt
, um noch mehr zu speichern)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 Bytes
Nutzt
paste
und Vektor-Recycling.quelle
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
cat
Leerzeichen zwischen den Zeichenfolgen eingefügt werden . Am Anfang jeder Zeile steht also ein Leerzeichen, mit Ausnahme des ersten.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 73p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")
Vector Recycling schlägt mich wieder.`~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"")
tio.run/##K/r/…T-SQL,
8987 BytesBearbeiten: 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
FROM
Klausel multipliziert mit 3 bereitgestelltquelle
GNU DC, 51
quelle
dc
, aber auch die fast rohe Version ist kürzer:[Happy Birthday To You]d[Happy Birthday Dear dc]rdf
51 Zeichen.Perl - 58
Laufen mit:
Nur zum Spaß:
quelle
say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]
?Python 507 Bytes
Keine Preise zu gewinnen ... aber wenn Sie genau hinschauen, gibt es einige ASCII-Kunstwerke:
quelle
PowerShell -
696459und 91
und 108
quelle
Rubin, 56
quelle
=
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).Marbelous , 151
Wird bei
Happy Birthday
jedemhb
Aufruf entweder mitto you
oderDear Marbelous
angefügt gedruckt, je nachdem, ob die Eingabe0
oder ist1
. Der übergebene Marmorhb
wird nicht ausgegeben, da er im Synchronisator stecken bleibt&0
.Unten ist die Tafel
hb
mit hexadezimaler Umwandlung in ASCII-Text:quelle
CJam, 46 Bytes
Probieren Sie es hier aus.
Dadurch bleibt das folgende Array auf dem Stapel:
Dessen Inhalt wird am Ende des Programms automatisch hintereinander gedruckt.
Alternativ mit einer for-Schleife und der gleichen Zeichenanzahl:
quelle
Haskell: 75
Codeausgabe in ideone
Haskell Einzeiler: 79
Sie können den Einzeiler hier online testen: http://tryhaskell.org/
quelle
mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
putStrLn
der Spezifikation entsprechen (Sie erhalten doppelte Anführungszeichen mitprint
)_
wird nicht benötigt, weil der Rückgabewert von main weggeworfen wird - man sieht es nur in GHCiVar'aQ - 121
quelle
GolfScript: 54 Zeichen
Probelauf:
quelle
T-SQL (MS-konform): 75
quelle
+char(10)
das Anführungszeichen durch einen Zeilenumbruch ersetzen. Machen Sie einfach den Rückgabeteil der Zeichenfolge.C #
(75)(73)Verwendung
System.Diagnostics
zum Zwecke vonDebug.Print
Upgrade auf @Abbas 'Code
Upgrade auf @ Tyress 'Code
(83)(76)Ausgabe:
quelle
String.Format
und dem ternären Operator speichern . Sie können auch dafür sorgen, dass dies weniger wie ein C # -Programmi++<3