Nyanyikan Selamat Ulang Tahun untuk bahasa pemrograman favorit Anda

119

Bahasa pemrograman favorit Anda baru saja berulang tahun. Bersikap baik dan nyanyikan lagu Selamat Ulang Tahun .

Tentu saja Anda harus mencapainya dengan menulis program dalam bahasa itu. Program tidak menerima input, dan menulis teks berikut ke output standar atau file arbitrer:

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

Anda harus mengganti bagian yang diberi tanda kurung (dan menghilangkan tanda kurung).

Ini adalah kode golf - kode terpendek menang.

MEMPERBARUI

Saya senang pertanyaan itu membangkitkan minat besar. Biarkan saya menambahkan beberapa info tambahan tentang penilaian. Seperti yang dinyatakan pada awalnya, pertanyaan ini adalah kode golf, sehingga kode terpendek akan menang. Pemenang akan dipilih pada akhir minggu ini (19 Oktober).

Namun, saya juga menghargai kiriman cerdas lainnya dengan suara terbanyak (dan saya mendorong semua orang untuk melakukannya juga). Oleh karena itu, meskipun ini adalah kontes kode-golf, jawaban yang tidak terlalu pendek juga diterima.

Hasil

Selamat kepada Pengoptimal , pemenang kontes ini dengan panjang 42 byte, pengajuan CJam .

David Frank
sumber
2
Bisakah kita menghitung nama bahasa pemrograman sebagai satu byte karena itu hanya akan tampak adil bagi orang-orang yang mengkode dalam bahasa yang bertele-tele seperti JavaScript vs seseorang yang melakukannya dalam C. Kita benar-benar mencari sebagian besar logika kreatif kan?
MonkeyZeus
14
Mengapa semua upvotes untuk ini terlepas dari semua downvotes untuk lagu Bonbon ? Ini sama membosankannya dengan tantangan.
xnor
10
Saya mungkin harus menyebutkan bahwa lagu itu adalah hak cipta dan mendistribusikan program-program ini dapat menyebabkan DMCA
ratchet freak
4
Setidaknya satu jawaban mencetak terkemuka baris baru. Apakah itu diizinkan?
Dennis

Jawaban:

47

CJam, 46 42 byte

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

Bagaimana itu bekerja:

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

Ini meninggalkan tumpukan sebagai berikut di akhir kode:

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

yang dicetak secara otomatis ke keluaran sebagai

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

Coba di sini (Salin kodenya dan jalankan)

Pengoptimal
sumber
1
apakah "15 karakter pertama" berasal dari huruf F? Apakah itu bagaimana ia tahu nomor 15?
vijrox
1
Ya, af adalah 10-15.
Jacob
122

LOLCODE: 109 (105 dengan ejaan "benar")

LOLCODE bukan bahasa yang bagus untuk bermain golf, terutama karena Anda kehilangan semua keindahan dan ekspresif saat memperpendek kode.

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

Uji dengan menggunakan loljs

Ini adalah rendition pilihan saya, dengan berat 187 karakter (spasi ditambahkan untuk kejelasan):

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
saya khawatir alien
sumber
15
Saya hanya tahu akan ada jawaban LOLCODE untuk ini. BTW, bisakah kamu menulis insw t kwotez? KTHXBYE.
Level River St
2
Saya mencoba menulis jawaban LOLCODE untuk tantangan lain beberapa waktu lalu, tetapi terlalu bertele-tele untuk bermain golf kode, dan tidak memiliki struktur data yang layak dan kemampuan untuk membuat fungsi yang kompleks, sehingga agak membatasi usaha saya!
Saya khawatir alien
3
Jawaban ini telah memberi saya dorongan untuk mengunduh LOCODE dan benar-benar mempelajarinya dengan benar.
Pharap
2
Ini bagus !!
AStopher
89

Berharap ulang tahun barcode barcode - terlalu banyak byte

Ini mencetak ayat-ayat dan membacanya dengan keras.

Selamat ulang tahun

Selamat Ulang Tahun untukmu
Selamat Ulang
Tahun untukmu
Selamat Ulang Tahun Dear Mathematica Selamat Ulang Tahun untukmu

StringReplacemengganti setiap koma dengan NewLine. Barcode tidak dapat berisi karakter kontrol.

DavidC
sumber
13
Saya tidak dapat melihat tombol kode batang di keyboard saya! Bagaimana saya bisa menguji ini?
matsjoyce
17
Saya suka bahwa ada 10di barcode (sudut kanan bawah), melihat yang BarcodeRecognizediperkenalkan di Mathematica 10. ^^
Martin Ender
Iya! Saya tidak memperhatikan itu.
DavidC
11
Saya sebenarnya memindai ini dengan pembaca kode QR. Ia memiliki ruang ekstra setelah setiap koma, tidak bisakah Anda menyimpan byte jika Anda— oh, tunggu. Lupakan.
Timwi
55

TI-Basic, 53 byte

Yah, karena semua orang memasang bahasa pemrograman favorit mereka, saya mungkin juga menambahkan salah satu favorit lama saya. Saya menghabiskan banyak waktu selama bertahun-tahun (sebelum saya lulus ke bahasa pemrograman aktual) mengetik perintah ke jendela setengah ukuran ponsel pintar.

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

Kalkulator saya tidak mendukung huruf kecil, dan satu-satunya variabel yang dapat berupa string adalah Str1, Str2 dll.

Regangkan Maniac
sumber
Rasa TI-Basic yang mana? Saya benar-benar mengenalnya di TI-84.
Jesan Fafon
7
Selalu menyenangkan melihat TI-Basic. Ini tampaknya standar 8x TI-Basic, di mana setiap ekspresi disimpan secara otomatis ke Ans, yang dapat digunakan strategi optimasi yang aneh dan sulit diikuti. Saya juga memulai pemrograman dengan bahasa yang luar biasa ini.
codebreaker
4
Catatan untuk editor: dapatkah Anda memposting perubahan (dalam hal ini kehilangan 8 karakter) dalam komentar daripada hanya mengeditnya? Itu akan membuat saya merasa ini masih menjadi jawaban saya.
Stretch Maniac
2
+1 !! itulah cara saya belajar memprogram juga. Saya membangun Tron untuk TI-83: ​​D itu cukup lambat, jadi tidak menyenangkan.
Kapal
2
Haha itu luar biasa. Saya membuat game Blackjack untuk TI-83. Dalam prosesnya saya mempelajari semua aturan Blackjack dengan sangat akrab.
thomasrutter
44

Sed, 60 55 byte

(1 karakter ditambahkan karena tidak ada cara untuk membuat sedbekerja tanpa input.)

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

Tentu saja bukan pemenang, diposting untuk menunjukkan fitur sedlangka s///menggantikan hanya kejadian ke - n .

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 (lebih pendek tapi tidak menarik): 52 karakter

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

Contoh dijalankan:

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
manatwork
sumber
7
sedjawaban selalu pemenang IMO :)
Digital Trauma
Jawaban yang lebih pendek tampaknya 51 byte, daripada 52 yang Anda daftarkan
Taylor Scott
1
@TaylorScott, penjelasan di atas juga berlaku di sana: "(1 karakter ditambahkan karena tidak ada cara untuk membuat sedbekerja tanpa masukan.)".
manatwork
Ahh, itu masuk akal :)
Taylor Scott
30

C, 73 byte

main(c){for(;c-5;)printf("Happy Birthday %s\n",++c-4?"To You":"Dear C");}
VX
sumber
Bug tidak signifikan: seharusnya i++-3. (Saat ini "Dear c" muncul di baris ke-2.) (Saat menggunakan variabel tunggal, saya akan
menamainya
tetap konstan, variabel berubah. Adakah ide untuk mempersingkat kodenya?
VX
Maaf, tidak ada ide untuk mempersingkatnya. C bukan kekuatan saya. (Saya menemukan bug karena bahkan skor Anda saat ini sangat sulit bagi saya sehingga saya harus mencobanya.;))
manatwork
12
Bukankah seharusnya "Dear C" (huruf besar)?
TRiG
Saya juga merindukan karakter interpungsi di sana ...
VX
27

Python, 61 60 59

H="\nHappy Birthday to You"
print(H*3)[:60]+"Dear Python"+H
Falko
sumber
1
Anda dapat menyimpan 1 byte - H="\nHappy Birthday to You"danprint(H*3)[:59]+" Dear Python"+H
Stretch Maniac
1
Apakah ini python 2.7 atau 3?
George
2
@ George: Python 2.7, karena tidak memiliki tanda kurung di sekitar printargumen.
Falko
1
Apakah output dari juru bahasa interaktif dihitung? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
threed
1
Anda dapat menyimpan satu lagi dengan menghapus ruang sebelumnya Deardan mengubahnya 59menjadi 60.
threed
26

sh, 52

H()(echo Happy Birthday ${@-to You});H;H;H Dear sh;H
Trauma Digital
sumber
3
Dengan nilai default ekspansi parameter hanya 53 karakter: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
manatwork
Ooh @manatwork sangat bagus!
Trauma Digital
2
Anda dapat menghilangkan titik dua dalam ekspansi parameter - yang berfungsi jika parameter tidak pernah ditetapkan, sementara :-juga mencakup kasus ketika diatur tetapi kosong
@professorfish Nice - terima kasih, saya tidak tahu itu!
Digital Trauma
@DigitalTrauma Tempat yang bagus untuk melihat jika Anda perlu menyimpan karakter adalah wiki.bash-hackers.org/syntax/pe - ada daftar semua sintaks ekspansi parameter
22

ArnoldC , 228 byte

Mari kita buat Arnold Schwarzenegger bernyanyi ...

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

keluaran:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear ArnoldC
Happy Birthday to you
Wasi
sumber
@squeamishossifrage lol, sudah diperbaiki.
Wasi
16
Mungkin Anda bisa menambahkan Ahnold lisp! Hahpy Birfdaymengurangi jumlah karakter dengan 4.
Kompas
19

Bahasa Pemrograman Shakespeare , 3429 byte

tidak ada yang akan cukup gila untuk memasuki tantangan dengan SPL, jadi ...

Kata-kata saya sendiri, beberapa waktu lalu. Namun, seseorang cukup gila untuk melakukannya. Ya ya saya tahu. Terlalu banyak byte. Tapi SPL layak untuk dimasukkan di sini, saya pikir. Dan percayalah , saya telah melakukan upaya besar untuk "golf" program ini, itulah sebabnya itu sedikit berulang dan menggunakan sebagian besar kata-kata yang sama (saya selalu bisa mengikuti saran DLosc , tapi itu akan menjadi terlalu ekstrem bahkan untuk saya) .

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]

Arti dari semua ini?

OK, jika Anda ingin tahu bagaimana semua ini seharusnya bekerja, izinkan saya mencoba dan menjelaskan alasan saya. Pertama, variabel. Mereka harus berasal dari drama Shakesperian dan, karena jumlah bakteri penting, kita harus memilih yang kecil; demikian, Ajaxdan Fordmuncul. Mereka membutuhkan deskripsi setelah dideklarasikan (yang diabaikan, tetapi masih); Saya bisa menggunakan satu huruf, tapi heh.

Babak I, Adegan I

var Ajax, Ford; Ford = 0;

Kami membawa variabel ke atas panggung dan memberi Ajaxtahu Fordbahwa nilainya adalah 0.

Babak I, Adegan II

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

OK, jika nilai yang disimpan Fordlebih besar dari 3, program melompat ke Scene V; selain itu, nilainya bertambah.

Babak I, Adegan 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;

Banyak dan banyak garis. Idenya adalah untuk mengutak-atik nilai yang disimpan Ford, melakukan banyak dan banyak operasi aritmatika untuk mendapatkan nomor ASCII dari huruf yang diinginkan, kemudian kami memberitahu kompiler untuk menampilkan angka dalam bentuk karakter. Begitulah cara Anda menulis Happy Birthday. Ada bagian ifdalam adegan ini: idenya adalah untuk memeriksa apakah ini adalah frase ketiga dari lagu; jika ya, kita lompat ke Scene IV; kalau tidak kita terus maju, untuk menulis to You. Setelah itu, kita kembali ke Scene II.

Babak I, Adegan 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;

Cara kerjanya mirip dengan Adegan di atas: idenya adalah menulis Dear SPL.

Babak I, Adegan V

End.

Seperti itu.

Saya masih belum menemukan tempat di mana ini dapat diuji, sayangnya ...

Rodolfo Dias
sumber
Saya pikir Anda harus dapat mengulangi kata-kata, seperti fat fat fat fat cat. Juga, saya menggunakan github.com/drsam94/Spl/blob/master/splc.py untuk mengkompilasi kode spl saya.
clamchowder314
16

Ruby, 54 byte

Saya hanya berpikir "Hei, belum ada jawaban Ruby", tetapi kemudian satu muncul beberapa detik sebelum ini. Baiklah...

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

Adakah cinta untuk PHP? 61 59 58 byte

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

Lihat dalam aksi @ http://sandbox.onlinephpfunctions.com/

MonkeyZeus
sumber
1
Gabungkan tugas menjadi $ t dengan output pertamanya:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork
@manatwork saran yang bagus, terima kasih!
MonkeyZeus
58
Tidak. Tidak ada cinta untuk PHP. Pernah.
Nama Palsu
Jumlah byte yang sama dengan tag pendek:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius
1
Ganti \ndengan baris yang sebenarnya untuk menghemat char.
Christoph
15

Saya tidak bisa memutuskan hanya satu bahasa: /

BrainBack: 68

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

BrainBack adalah campuran antara BrainFuck dan Forth, dibuat untuk tantangan PCG 7 Mar 2014

Extended BrainFuck : 79

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

Ulang tahun EBF adalah 16 Jul 2010

Skema: 96

(R5RS, Racket, R6RS REPL)

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

Skema lahir Desember, 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))

Namun, rasanya lebih tepat melakukan yang ini dalam bahasa Prancis (86):

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

Keluaran:

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

Ulang tahun Zozotez adalah 19 Jul 2011

Sylwester
sumber
4
+1 untuk "Selamat ulang tahun sayang Extended Brainfuck", mungkin nama bahasa yang paling melelahkan di sini. Namun program ini adalah sebagian kecil dari ukuran yang setara untuk bahasa induk. Dan untuk Zozotez, yang memang terdengar lebih baik dalam bahasa Prancis, meskipun secara umum saya tidak terlalu suka cara orang Prancis memeras nama orang tersebut menjadi garis yang identik untuk lagu ini.
Level River St
Dalam jawaban Zozotez Anda, seharusnya begitu Joyeux anniversaire à Zozotez.
Beta Decay
2
@BetaDecay Menurut istri saya (Prancis), itu harus tanpa kata depan. Wikipedia bahasa Prancis setuju.
Sylwester
14

Deadfish ( 2610 2391 chars)

Apa ini? Keluaran hanya tantangan? Kedengarannya itu adalah pekerjaan untuk Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

Sayangnya, karena Deadfish hanya menghasilkan bilangan bulat, kode di atas menampilkan representasi ASCII dari setiap karakter dalam lagu.

Jika kita menggunakan spesifikasi itu

Kesalahan tidak diakui: shell hanya menambahkan karakter baris baru!

maka kita bisa bermain golf ini ke 2391 karakter:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

Catatan: Deadfish sebenarnya bukan bahasa favorit saya, tetapi saya tidak bisa menolak: P. Juga bermain golf di Deadfish adalah teka-teki yang menyenangkan.

Sp3000
sumber
19
Untuk nilai "kesenangan" tertentu.
Charles Wood
13

JS, 83 byte

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

atau 79 byte oleh @Ingo Bürk

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

atau 71 byte oleh @kapep

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

atau jalankan di konsol halaman ini (42 byte)

eval($("#answer-39759 code:first").text())
l2aelba
sumber
4
Juga, ini lebih singkat: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(Anda masih dapat menggunakan promptuntuk menyimpan lebih banyak lagi)
Ingo Bürk
11
LOL di bagian kode terakhir ..: D
Pengoptimal
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
waspada, bukan console.log, membutuhkan 2 tanda kurung lagi tetapi lebih pendek: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65
11

R: 70 byte

Mengambil keuntungan dari pastedan daur ulang vektor.

writeLines(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")))
bdzimmer
sumber
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
germcd
@ germcd Itu tidak berfungsi, karena catmenambahkan spasi di antara string. Jadi Anda berakhir dengan spasi di awal setiap baris kecuali yang pertama.
bdzimmer
write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 byte. Ini adalah solusi asli saya dengan 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")daur ulang vektor mengalahkan saya lagi.
Vlo
Dikurangi menjadi 66 byte `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") tio.run/##K/r/…
Nick Kennedy
11

T-SQL, 89 87 byte

Sunting: Mungkin tidak boleh mengeruk hal-hal lama ini, tapi saya hanya melihat perubahan yang jelas untuk mendapatkan kembali beberapa byte.

Menggunakan STUFF untuk menghapus bagian string yang tidak diinginkan, indeks awal disediakan oleh nilai-nilai dalam FROMklausa dikalikan dengan 3

SELECT STUFF('Happy Birthday to You  Dear SQL',N,8,'')FROM(VALUES(24),(24),(15),(24))S(N)
MickyT
sumber
Yang ini bagus!
TLama
Ini adalah solusi SQL yang brilian dan trik yang sangat bagus!
BradC
9

GNU dc, 51

[Happy Birthday to You]d[Happy Birthday Dear dc]rdf
Trauma Digital
sumber
3
Saya juga mencoba dc, tetapi bahkan versi yang hampir mentah lebih pendek: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 karakter.
manatwork
Pada roll hari ini @ manatwork :)
Digital Trauma
3
Saya belajar tentang keberadaan dc hari ini karena posting ini dan sangat bagus.
Caleb Paul
9

Perl - 58

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

Jalankan dengan:

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

Hanya untuk bersenang-senang:

perl -E'for(<HappyBirthday{0,1,2,3}>){s/B/ B/;s/2/ Dear Perl\n/;print s/\d/ To You\n/r}'
hmatt1
sumber
6
Bagaimana dengan say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024
@ core1024 Saya tidak tahu Anda bisa melakukannya dengan array, itu luar biasa. Jangan ragu untuk memposting sebagai jawaban Anda sendiri!
hmatt1
8

Python 507 byte

cetak "" "
H ap py- Bir hari ke-ke-Y ou = Senang - B irt hday
- to - Y ou = H appy - B irthday - D e
ar-P ython = Ha ppy - Bir t hda y -ke- Y o uHapp y -
B irthday - to - Y ou = aplikasi H
y - Hari ke-2 - ke-o o = H a ppy - B ir
"" ".replace (" \ n "," "). ganti (" "," "). ganti (" - "," ") .replace (" = "," \ n ") [: 92]

Tidak memenangkan hadiah apa pun ... tetapi jika Anda melihatnya dengan cermat, ada beberapa seni ASCII:

# # # ### ### # # ### ##### ### ##### # # ### # # # #
# # # # # # # # # # # # # # # # # # # # # # #
#### ##### ### ### # ### # ### # #### # # ##### # #
# # # # # # # # # # # # # # # # # # #
# # # # # # # ### ##### # # # # # ### # # # #
Alex
sumber
Ini bukan lawan yang serius.
Buah Esolanging
3
@ Challenger5 Ya, "Namun, saya juga menghargai kiriman cerdas lainnya dengan suara terbanyak (dan saya mendorong semua orang untuk melakukannya juga). Karena itu, meskipun ini adalah kontes kode-golf, jawaban yang tidak terlalu pendek juga diterima . "
Alex
7

PowerShell - 69 64 59

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

dan 91

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

dan 108

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

Ruby, 56

x="Happy Birthday To You
"*4
x[59,6]="Dear Ruby"
puts x
britishtea
sumber
Tidak bisakah kau sebariskan banyak hal?
Pengoptimal
2
Metode yang berakhiran =selalu mengembalikan hasil ekspresi setelah tanda sama dengan. Jika saya sebaris ini, itu hanya akan mencetak "Dear Ruby"( String#[]=adalah metode).
britishtea
1
> Baris baru dalam string. Oke, sekarang saya sepenuhnya yakin bahwa ruby ​​hanyalah sihir voodoo dan sebagai petani saya harus tetap menggunakan python.
sagiksp
6

Marbelous , 151

Mencetak Happy Birthdaysetiap kali hbdipanggil, dengan salah satu to youatau Dear Marbelousditambahkan, berdasarkan apakah inputnya 0atau 1. Marmer yang lewat hbtidak akan di-output, karena akan macet di sinkronisasi &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

Di bawah ini adalah papan hb, dengan hex dikonversi menjadi teks ascii: masukkan deskripsi gambar di sini

es1024
sumber
5

CJam, 46 byte

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

Coba di sini.

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

Ini meninggalkan array berikut di stack:

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

Konten siapa yang secara otomatis dicetak kembali-ke-belakang di akhir program.

Atau, dengan for-loop dan jumlah karakter yang sama:

4{"Happy Birthday "I2="Dear CJam""to You"?N}fI
Martin Ender
sumber
5
Pembohong!! bahasa favorit Anda adalah Ruby / Mathematica: P
Optimizer
1
@ Pengoptimal Tentu saja bukan Ruby, mungkin Mathematica, tapi saya bahkan tidak yakin tentang itu. Untuk pemrograman "nyata", saya mungkin selalu memilih C / C ++ / C #. (Saya juga cukup yakin, bahwa milik Anda adalah JS: P.)
Martin Ender
5
Anda mendapatkan saya: P: D
Pengoptimal
5

Haskell: 75

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

Output kode dalam ideone

Haskell one liner: 79

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

Anda dapat mencoba satu liner online di sini: http://tryhaskell.org/


sumber
1
Satu liner yang memangkas satu karakter:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking
daftar pemahamannya adalah soooo loooonnnnggggg
Alex Reinking
2
juga, secara teknis harus putStrLnsesuai dengan spec (Anda mendapatkan tanda kutip ganda dengan print)
Alex Reinking
2
Tidak _diperlukan karena nilai pengembalian main dibuang - Anda hanya melihatnya di GHCi
bangga 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'
Peluruhan Beta
sumber
1
Qapla '! +1 untuk menggunakan Var'aQ dari semua bahasa!
WallyWest
5

GolfScript: 54 karakter

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

Contoh dijalankan:

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
manatwork
sumber
Saya hanya memperhatikannya. (Efek samping kecil dari mencoba menulis kode GolfScript selama sekitar 5 ~ 6 jam.) Terima kasih, @ MartinBüttner.
manatwork
1
Selamat Ulang Tahun Dear CodeGolf ?
Dennis
Grr. Saya lelah tidak hanya ketika menulisnya, tetapi juga ketika memperbaikinya. Terima kasih @Dennis.
manatwork
5

T-SQL (Sesuai MS): 75

print stuff(replicate('Happy Birthday to You '+char(10),4),62,6,'Dear SQL')
Kyle Hale
sumber
Bagus ... berharap saya sudah memikirkan itu :)
MickyT
Ide yang hebat! Simpan 9 byte lebih banyak dengan mengganti +char(10)dengan satu baris di dalam kutipan, buat saja bagian dari string.
BradC
5

C # (75) (73)

Menggunakan System.Diagnosticsuntuk tujuanDebug.Print

Tingkatkan ke kode @Abbas

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

Tingkatkan ke kode @Tyress (83) (76)

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

Keluaran:

Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear C#
Happy Birthday To You
Tuan Mick
sumber
2
Anda dapat menyimpan beberapa karakter menggunakan String.Formatdan operator ternary. Anda juga dapat membuat ini terlihat kurang seperti program C # dan gunakan i++<3; p
FryAmTheEggman