Zaśpiewaj Happy Birthday w swoim ulubionym języku programowania

119

Twój ulubiony język programowania właśnie miał urodziny. Bądź miły i zaśpiewaj piosenkę Happy Birthday .

Oczywiście powinieneś to osiągnąć, pisząc program w tym języku. Program nie pobiera danych i zapisuje następujący tekst na standardowym wyjściu lub dowolnym pliku:

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

Powinieneś zastąpić nawias kwadratowy (i pominąć nawiasy kwadratowe).

To jest golfowy kod - wygrywa najkrótszy kod.

AKTUALIZACJA

Cieszę się, że pytanie wzbudziło duże zainteresowanie. Pozwól mi dodać kilka dodatkowych informacji na temat punktacji. Jak wspomniano pierwotnie, to pytanie dotyczy kodu golfowego, więc wygra najkrótszy kod. Zwycięzca zostanie wybrany pod koniec tego tygodnia (19 października).

Jednak nagradzam również inne dowcipne opinie dodatkowymi głosami (i zachęcam wszystkich, aby tak zrobili). Dlatego chociaż jest to konkurs golfowy, mile widziane są również niezbyt krótkie odpowiedzi.

Wyniki

Gratulacje dla Optimizera , zwycięzcy tego konkursu z jego 42-bajtowym przesłaniem CJam .

David Frank
źródło
2
Czy możemy policzyć nazwę języka programowania jako jednego bajtu, ponieważ wydawałoby się to sprawiedliwe tylko dla osób kodujących w długim języku, takim jak JavaScript, w porównaniu do kogoś, kto robi to w C. Naprawdę szukamy najbardziej kreatywnej logiki, prawda?
MonkeyZeus,
14
Dlaczego wszystkie przychylne opinie na ten temat, pomimo wszystkich negatywnych opinii na temat piosenki Bonbon ? To równie nudne wyzwanie.
xnor
10
Powinienem chyba wspomnieć, że utwór jest chroniony prawem autorskim, a rozpowszechnianie tych programów może spowodować DMCA
maniak ratchet
4
Co najmniej jedna z odpowiedzi drukuje wiodącą nową linię . Czy to jest dozwolone?
Dennis

Odpowiedzi:

47

CJam, 46 42 bajtów

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

Jak to działa:

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

Spowoduje to pozostawienie stosu na końcu kodu:

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

które są drukowane automatycznie w celu wydrukowania jako

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

Wypróbuj tutaj (Skopiuj kod i uruchom go)

Optymalizator
źródło
1
czy „pierwsze 15 znaków” pochodzi od litery F? czy tak zna numer 15?
vijrox
1
Tak, są 10-15.
Jacob
122

LOLCODE: 109 (105 z „poprawną” pisownią)

LOLCODE nie jest świetnym językiem do gry w golfa, zwłaszcza, że ​​tracisz całe piękno i ekspresję podczas skracania kodu.

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

Przetestuj za pomocą Loljs

To jest moje preferowane wykonanie, ważące 187 znaków (dodano spacje dla zachowania przejrzystości):

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
zaalarmowałem kosmitę
źródło
15
Po prostu wiedziałem, że będzie na to LOLCODE odpowiedź. BTW, kan u wryt n lwrcase insyd t kwotez? KTHXBYE.
Level River St
2
Próbowałem napisać odpowiedź LOLCODE na inne wyzwanie już dawno temu, ale jest zbyt rozwlekła, by grać w golfa w kodzie, i brakuje jej przyzwoitych struktur danych i możliwości tworzenia złożonych funkcji, więc to raczej ograniczyło moje wysiłki!
zaalarmowałem kosmitę
3
Ta odpowiedź skłoniła mnie do pobrania LOCODE i faktycznego nauczenia się go.
Pharap
2
To jest świetne!!
AStopher
89

Mathematica - życzenia urodzinowe z kodem kreskowym - zdecydowanie za dużo bajtów

To drukuje wiersze i czyta je na głos.

happy birthday

Wszystkiego najlepszego
Wszystkiego najlepszego
Wszystkiego najlepszego Drogi Mathematica
Wszystkiego najlepszego

StringReplacezamienia każdy przecinek na NewLine. Kody kreskowe nie mogą zawierać znaków kontrolnych.

DavidC
źródło
13
Nie widzę przycisku kodu kreskowego na klawiaturze! Jak mogę to przetestować?
matsjoyce,
17
Uwielbiam to, że jest 10kod kreskowy (prawy dolny róg), ponieważ BarcodeRecognizewprowadzono go w Mathematica 10. ^^
Martin Ender
Tak! Nie zauważyłem tego.
DavidC
11
Zeskanowałem to za pomocą czytnika kodów QR. Po każdym przecinku ma dodatkowe spacje, nie możesz zapisać bajtów, jeśli ... och, czekaj. Nieważne.
Timwi
55

TI-Basic, 53 bajty

Ponieważ wszyscy wprowadzają swój ulubiony język programowania, równie dobrze mogę dodać jeden z moich ulubionych. Spędziłem dużo czasu przez lata (zanim ukończyłem język programowania), wpisując polecenia w oknie o wielkości połowy smartfona.

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

Mój kalkulator nie obsługuje małych liter, a jedynymi zmiennymi, które mogą być łańcuchami, są Str1, Str2 itp.

Stretch Maniac
źródło
Który smak TI-Basic? Naprawdę się z tym zapoznałem na TI-84.
Jesan Fafon
7
Zawsze miło widzieć TI-Basic. Wydaje się, że jest to standardowy 8-krotny TI-Basic, w którym każde wyrażenie jest automatycznie zapisywane w Ans, którego można użyć w dziwnej i trudnej do przestrzegania strategii optymalizacji. Zacząłem też programować w tym niesamowitym języku.
codebreaker
4
Uwaga dla redaktorów: czy możesz opublikować jakieś zmiany (w tym przypadku utratę 8 znaków) w komentarzach, a nie tylko je edytować? To sprawiłoby, że poczułbym, że to wciąż moja odpowiedź.
Stretch Maniac
2
+1 !! tak też nauczyłem się programować. Zbudowałem Trona dla TI-83: ​​D, ale był on dość wolny, więc nie był zabawny.
Nacht
2
Haha, to niesamowite. Zrobiłem grę w blackjacka dla TI-83. W trakcie tego procesu poznałem zasady gry w blackjacka dość blisko.
thomasrutter
44

Sed, 60 55 bajtów

(Dodano 1 znak, ponieważ nie ma sposobu, aby sedpracować bez wkładu).

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

Z pewnością nie jest zwycięzcą, opublikowanym w celu wykazania sedrzadkiej s///cechy zastępowania tylko n- tego wystąpienia.

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 (krótszy, ale nie interesujący): 52 znaki

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

Przykładowy przebieg:

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
człowiek w pracy
źródło
7
sedodpowiedzi zawsze wygrywają IMO :)
Digital Trauma
Krótsza odpowiedź wydaje się mieć 51 bajtów, a nie 52, które wymieniłeś
Taylor Scott
1
@TaylorScott, zastosowano tam również wyjaśnienie u góry: „(Dodano 1 znak, ponieważ nie ma sposobu, aby sedpracować bez wkładu.)”.
manatwork
Ach, to ma sens :)
Taylor Scott
30

C, 73 bajty

main(c){for(;c-5;)printf("Happy Birthday %s\n",++c-4?"To You":"Dear C");}
VX
źródło
Nieznaczny błąd: powinien być i++-3. (Obecnie „Drogi c” pojawia się w 2. linii.) (Używając jednej zmiennej nazwałbym ją „c”.)
manatwork
stała stała, zmienna zmienna. Masz pomysł na skrócenie kodu?
VX
Przepraszam, nie mam pojęcia, żeby to skrócić. C nie jest moją siłą. (Znalazłem błąd, ponieważ nawet twój obecny wynik jest dla mnie tak niewiarygodny, że musiałem go wypróbować;;))
manatwork
12
Czy nie powinno to być „Drogi C” (wielkie litery)?
TRiG
Brakuje mi również znaków interpunkcyjnych ...
VX
27

Python, 61 60 59

H="\nHappy Birthday to You"
print(H*3)[:60]+"Dear Python"+H
Falko
źródło
1
Możesz zapisać 1 bajt - H="\nHappy Birthday to You"iprint(H*3)[:59]+" Dear Python"+H
Rozciągnij maniaka
1
Czy to python 2.7 lub 3?
George
2
@George: Python 2.7, ponieważ nie ma nawiasów wokół printargumentu.
Falko
1
Czy liczy się wyjście z interaktywnego tłumacza? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
thre
1
Możesz zaoszczędzić jeszcze jeden, usuwając przestrzeń przed Deari zmieniając 59na 60.
thre
26

sh, 52

H()(echo Happy Birthday ${@-to You});H;H;H Dear sh;H
Cyfrowa trauma
źródło
3
Wraz z rozwojem Parametr Wartość domyślna zaledwie 53 znaków: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
manatwork
Ooh bardzo dobrze @manatwork!
Digital Trauma
2
Możesz pominąć dwukropek w rozszerzeniu parametru - działa to, jeśli parametr nigdy nie został ustawiony, a :-także obejmuje przypadki, gdy jest ustawiony, ale pusty
@professorfish Nicea - dzięki, nie wiedziałem o tym!
Cyfrowa trauma
@DigitalTrauma Dobrym miejscem do sprawdzenia, czy trzeba ratować postacie, jest wiki.bash-hackers.org/syntax/pe - istnieje lista wszystkich składni rozwijania parametrów
22

ArnoldC , 228 bajtów

Niech Arnold Schwarzenegger śpiewa ...

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

wynik:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear ArnoldC
Happy Birthday to you
Czy byłem
źródło
@ squeamishossifrage lol, naprawiono.
Wasi
16
Być może możesz dodać seplenienie Ahnolda! Hahpy Birfdayzmniejsza liczbę znaków o 4.
Kompas
19

Język programowania Szekspira , 3429 bajtów

nikt nie będzie wystarczająco szalony, aby wziąć udział w z SPL, więc ...

Moje własne słowa, jakiś czas temu. A jednak ktoś był na tyle szalony, żeby to zrobić. Tak tak wiem. Za dużo bajtów. Ale myślę, że SPL zasługuje na uwzględnienie tutaj. I uwierzcie mi, zrobiłem olbrzymi wysiłek, aby „golfować” ten program, dlatego jest nieco powtarzalny i używa głównie tych samych słów (zawsze mogłem zastosować się do sugestii DLosc , ale byłoby to zbyt ekstremalne nawet dla mnie) .

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]

Znaczenie tego wszystkiego?

OK, jeśli jesteś ciekawy, jak to wszystko ma działać, pozwól mi wyjaśnić swoje rozumowanie. Po pierwsze zmienne. Muszą pochodzić ze sztuk Shakespera, a ponieważ liczba znaków jest ważna, musimy wybierać te małe; w ten sposób, Ajaxi Fordpojawiają się. Potrzebują opisu po zadeklarowaniu (który jest ignorowany, ale nadal); Mógłbym użyć jednej litery, ale heh.

Akt I, Scena I

var Ajax, Ford; Ford = 0;

Wprowadzamy zmienne na scenę i Ajaxinformujemy, Fordże jego wartość wyniesie 0.

Akt I, Scena II

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

OK, jeśli zapisana wartość Fordjest większa niż 3, program przejdzie do sceny V; w przeciwnym razie jego wartość jest zwiększana.

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

Obciążenia i obciążenia linii. Chodzi o to, aby manipulować zapisaną wartością Ford, wykonywać mnóstwo operacji arytmetycznych w celu uzyskania liczby ASCII żądanych liter, a następnie mówimy kompilatorowi, aby wypisał liczbę w postaci znakowej. Tak piszesz Happy Birthday. Jest w iftej scenie: chodzi o sprawdzenie, czy to jest trzecie zdanie piosenki; jeśli tak, przeskakujemy do Sceny IV; w przeciwnym razie będziemy pisać dalej to You. Następnie wracamy do sceny II.

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

Sposób, w jaki to działa, jest podobny do powyższej Sceny: chodzi o pisanie Dear SPL.

Akt I, Scena V.

End.

Właśnie tak.

Wciąż nie znalazłem miejsca, w którym można by to przetestować, niestety ...

Rodolfo Dias
źródło
Myślę, że powinieneś być w stanie powtarzać słowa jak fat fat fat fat cat. Ponadto używam github.com/drsam94/Spl/blob/master/splc.py do kompilacji mojego kodu spl.
clamchowder314
16

Rubinowy, 54 bajty

Pomyślałem tylko: „Hej, nie ma jeszcze odpowiedzi Ruby”, ale potem pojawiła się kilka sekund przed tą. No cóż...

puts h="Happy Birthday to You",h,h[0,15]+"Dear Ruby",h
Martin Ender
źródło
16

Jakaś miłość do PHP? 61 59 58 bajtów

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

Zobacz to w akcji @ http://sandbox.onlinephpfunctions.com/

MonkeyZeus
źródło
1
Połącz przypisanie do $ t z jego pierwszym wyjściem:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork
@manatwork doskonała sugestia, dzięki!
MonkeyZeus
58
Nie. Nie ma miłości do PHP. Zawsze.
Fałszywe imię
Ta sama liczba bajtów z krótkimi znacznikami:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius
1
Zamień na \nrzeczywisty podział linii, aby zapisać znak.
Christoph
15

Po prostu nie mogę zdecydować się na tylko jeden język: /

BrainBack: 68

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

BrainBack to połączenie BrainFuck i Forth, stworzone na wyzwanie PCG 7 marca 2014

Extended BrainFuck : 79

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

Urodziny EBF przypadają na 16 lipca 2010 r

Schemat: 96

(R5RS, rakieta, R6RS REPL)

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

Program powstał w grudniu 1975 r. (NB: PDF)

Zozotez : 96

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

Jednak wydaje się bardziej słuszne, robiąc to po francusku (86):

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

Wynik:

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

Urodziny Zozoteza to 19 lipca 2011 r

Sylwester
źródło
4
+1 za „Wszystkiego najlepszego, kochanie, Rozszerzone Brainfuck”, prawdopodobnie najbardziej pracochłonną nazwę językową tutaj. A jednak program jest ułamkiem wielkości odpowiednika dla języka nadrzędnego. I dla Zozoteza, który rzeczywiście brzmi lepiej w języku francuskim, choć ogólnie nie podoba mi się sposób, w jaki Francuzi wyciskają imię tej osoby w identycznej linii dla tej piosenki.
Level River St
W twojej odpowiedzi na Zozotez powinno tak być Joyeux anniversaire à Zozotez.
Beta Decay
2
@BetaDecay Według mojej (francuskiej) żony powinno być bez takiego przyimka. Francuska Wikipedia zgadza się.
Sylwester
14

Deadfish ( 2610 2391 znaków)

Co to jest? Wyzwanie tylko wyjściowe? Wygląda na to, że to praca dla Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

Niestety, ponieważ Deadfish generuje tylko liczby całkowite, powyższy kod generuje reprezentacje ASCII każdego znaku w utworze.

Jeśli użyjemy specyfikacji, że

Błędy nie są potwierdzane: powłoka po prostu dodaje znak nowej linii!

możemy zagrać w golfa do 2391 znaków:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

Uwaga: Deadfish nie jest tak naprawdę moim ulubionym językiem, ale nie mogłem się oprzeć: P. Gra w golfa w Deadfish jest sama w sobie zabawną łamigłówką.

Sp3000
źródło
19
Dla niektórych wartości „zabawy”.
Charles Wood
13

JS, 83 bajty

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

lub 79 bajtów @Ingo Bürk

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

lub 71 bajtów przez @kapep

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

lub uruchom na konsoli tę stronę (42 bajty)

eval($("#answer-39759 code:first").text())
L2aelba
źródło
4
Jest to również krótsze: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(nadal możesz użyć, promptaby zaoszczędzić jeszcze więcej)
Ingo Bürk
11
LOL na ostatnim fragmencie kodu ..: D
Optymalizator
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 zamiast konsoli.log, potrzebuje 2 dodatkowych nawiasów, ale krótszych: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65
11

R: 70 bajtów

Korzysta z pasterecyklingu wektorowego.

writeLines(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")))
bdzimmer
źródło
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
germcd
@germcd To nie do końca działa cat dodaje spacje między łańcuchami. Tak więc kończysz spacją na początku każdej linii oprócz pierwszej.
bdzimmer
write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 bajtów. Oto moje oryginalne rozwiązanie z 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")recyklingiem Vector bije mnie ponownie.
Vlo
Zmniejszony do 66 bajtów `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") tio.run/##K/r/…
Nick Kennedy
11

T-SQL, 89 87 bajtów

Edycja: Prawdopodobnie nie powinienem pogłębiać tych starych rzeczy, ale zauważyłem oczywistą zmianę w tym, by odzyskać kilka bajtów.

Używając STUFF do usuwania niechcianych części ciągu, indeks początkowy jest zapewniany przez wartości w FROMklauzuli pomnożone przez 3

SELECT STUFF('Happy Birthday to You  Dear SQL',N,8,'')FROM(VALUES(24),(24),(15),(24))S(N)
MickyT
źródło
Ten jest fajny!
TLama,
To świetne rozwiązanie SQL i bardzo fajna sztuczka!
BradC
9

GNU dc, 51

[Happy Birthday to You]d[Happy Birthday Dear dc]rdf
Cyfrowa trauma
źródło
3
Próbowałem też z dc, ale nawet prawie surowa wersja jest krótsza: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 znaków.
manatwork
Na rolce dzisiaj @manatwork :)
Digital Trauma
3
Dowiedziałem się o istnieniu dc dzisiaj z powodu tego postu i jest doskonały.
Caleb Paul,
9

Perl - 58

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

Biegnij z:

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

Dla żartu:

perl -E'for(<HappyBirthday{0,1,2,3}>){s/B/ B/;s/2/ Dear Perl\n/;print s/\d/ To You\n/r}'
hmatt1
źródło
6
Jak o say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024
@ core1024 Nie wiedziałem, że możesz to zrobić z tablicami, to niesamowite. Możesz pisać jako własną odpowiedź!
hmatt1
8

Python 507 bajtów

drukuj „” „
H ap py- Bir th day -to-Y ou = Happy - B irt hday
- do - Y ou = H appy - B dzień - D e
ar-P ython = Ha ppy - Bir t hda y -to- Y o uHapp y -
B irth - to - Y ou = H app
y - B-ten dzień -to-Y ou = H a ppy - B ir
"" ".replace (" \ n "," "). replace (" "," "). replace (" - "," ") .replace (" = "," \ n ") [: 92]

Nie wygrywając żadnych nagród ... ale jeśli przyjrzysz się temu uważnie, znajdziesz trochę grafiki ASCII:

# # # ### ### # ### ##### ### ##### # # ### # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
#### ##### ### ### # ### # ### # #### # ###### # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # ### ##### # # # # ### # # # #
Alex
źródło
To nie jest poważny pretendent.
Esolanging Fruit
3
@ Challenger5 Tak, „Jednak nagradzam też inne dowcipne opinie zwiększonymi głosami (i zachęcam też wszystkich do tego). Dlatego chociaż jest to konkurs golfa kodowego, mile widziane są również odpowiedzi tak krótkie . ”
Alex
7

PowerShell - 69 64 59

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

i 91

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

i 108

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

Ruby, 56

x="Happy Birthday To You
"*4
x[59,6]="Dear Ruby"
puts x
Britishtea
źródło
Nie umiesz wstawiać rzeczy?
Optymalizator
2
Metoda kończąca się na =zawsze zwraca wynik wyrażenia po znaku równości. Gdybym to podkreślił, wydrukowałoby to tylko "Dear Ruby"( String#[]=jest to metoda).
britishtea,
1
> Nowe linie w ciągach znaków. Okej, teraz jestem całkowicie przekonany, że rubin jest po prostu magią voodoo i jako chłop powinienem zamiast tego trzymać się pytona.
sagiksp
6

Cudowny , 151

Drukuje za Happy Birthdaykażdym razem, gdy hbjest wywoływane, z jednym to youlub Dear Marbelousdołączonym, w zależności od tego, czy wejście jest 0lub 1. Przekazany marmur hbnie zostanie wyprowadzony, ponieważ utknie w synchronizatorze &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

Poniżej znajduje się plansza hbz heksami przekonwertowanymi na tekst ascii: wprowadź opis zdjęcia tutaj

es1024
źródło
5

CJam, 46 bajtów

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

Wypróbuj tutaj.

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

Pozostawia to następującą tablicę na stosie:

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

Które treści są automatycznie drukowane jeden po drugim na końcu programu.

Alternatywnie, z pętlą for i tą samą liczbą znaków:

4{"Happy Birthday "I2="Dear CJam""to You"?N}fI
Martin Ender
źródło
5
Kłamca!! twoim ulubionym językiem jest Ruby / Mathematica: P
Optimizer
1
@Optimizer Na pewno nie Ruby, może Mathematica, ale nawet nie jestem tego pewien. Do „prawdziwego” programowania prawdopodobnie zawsze wybrałbym C / C ++ / C #. (Jestem również całkiem pewien, że twój należy do JS: P.)
Martin Ender
5
masz mnie: P: D
Optymalizator
5

Haskell: 75

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

Kod wyjściowy w ideone

Haskell one liner: 79

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

Możesz wypróbować jeden liner online tutaj: http://tryhaskell.org/


źródło
1
Jedna wkładka, która goli jedną postać:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking
wyjaśnienia listy są takie bardzo loooonnnnggggg
Alex Reinking
2
technicznie też powinno być putStrLnzgodne ze specyfikacją (otrzymujesz podwójne cudzysłowy print)
Alex Reinking
2
Nie _jest to konieczne, ponieważ wartość zwrotna main jest wyrzucana - widać to tylko w GHCi
dumny 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'
Rozpad beta
źródło
1
Qapla! +1 za używanie Var'aQ we wszystkich językach!
WallyWest,
5

GolfScript: 54 znaki

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

Przykładowy przebieg:

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
człowiek w pracy
źródło
Właśnie to zauważyłem. (Mały efekt uboczny próby napisania tego kodu GolfScript przez około 5 ~ 6 godzin.) Dzięki, @ MartinBüttner.
manatwork
1
Wszystkiego najlepszego Drogi CodeGolf ?
Dennis
Grr. Byłem zmęczony nie tylko, kiedy to napisałem, ale także kiedy to naprawiłem. Dzięki @Dennis.
manatwork
5

T-SQL (zgodny z MS): 75

print stuff(replicate('Happy Birthday to You '+char(10),4),62,6,'Dear SQL')
Kyle Hale
źródło
Fajne ... szkoda, że ​​o tym nie pomyślałem :)
MickyT,
Świetny pomysł! Zaoszczędź jeszcze 9 bajtów, zastępując +char(10)je znakiem podziału w cudzysłowie, po prostu utwórz część zwracaną ciągu.
BradC
5

C # (75) (73)

Używanie System.Diagnosticsdo celówDebug.Print

Zaktualizuj do kodu @Abbas

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

Uaktualnij do kodu @Tyress ' (83) (76)

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

Wynik:

Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear C#
Happy Birthday To You
Mistrzu Mick
źródło
2
Możesz zapisać kilka znaków za pomocą String.Formati operatora trójskładnikowego. Możesz także sprawić, że będzie to wyglądać znacznie mniej jak program w języku C # i użyj i++<3; p
FryAmTheEggman