Hát chúc mừng sinh nhật bằng ngôn ngữ lập trình yêu thích của bạn


119

Ngôn ngữ lập trình yêu thích của bạn vừa có một sinh nhật. Hãy thật tốt và hát chúc mừng sinh nhật .

Tất nhiên bạn nên thực hiện điều này bằng cách viết một chương trình bằng ngôn ngữ đó. Chương trình không có đầu vào và ghi văn bản sau vào đầu ra tiêu chuẩn hoặc một tệp tùy ý:

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

Bạn nên thay thế phần ngoặc (và bỏ dấu ngoặc).

Đây là một mã golf - mã ngắn nhất thắng.

CẬP NHẬT

Tôi rất vui vì câu hỏi đã gây ra sự quan tâm lớn. Hãy để tôi thêm một số thông tin thêm về ghi bàn. Như đã nêu ban đầu, câu hỏi này là một mã golf, vì vậy mã ngắn nhất sẽ giành chiến thắng. Người chiến thắng sẽ được chọn vào cuối tuần này (19 tháng 10).

Tuy nhiên, tôi cũng thưởng cho những bài nộp dí dỏm khác với số phiếu tăng (và tôi khuyến khích mọi người cũng làm như vậy). Do đó, mặc dù đây là một cuộc thi đánh gôn, nhưng những câu trả lời không quá ngắn cũng được hoan nghênh.

Các kết quả

Xin chúc mừng Trình tối ưu hóa , người chiến thắng trong cuộc thi này với bài nộp CJam dài 42 byte .


2
Chúng ta có thể đếm tên của ngôn ngữ lập trình là một byte bởi vì nó chỉ có vẻ công bằng với những người viết mã bằng ngôn ngữ dài như JavaScript so với ai đó làm bằng C. Chúng ta thực sự đang tìm kiếm logic sáng tạo nhất phải không?
MonkeyZeus

14
Tại sao tất cả các upvote cho điều này mặc dù tất cả các downvote cho bài hát Bonbon ? Đây chỉ là một thử thách nhàm chán.
xnor

10
Tôi có lẽ nên đề cập rằng bài hát có bản quyền và việc phân phối các chương trình này có thể gây ra một DMCA
ratchet freak


4
Ít nhất một trong những câu trả lời in một dòng mới hàng đầu . Điều đó có được phép không?
Dennis

Câu trả lời:


47

CJam, 46 42 byte

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

Làm thế nào nó hoạt động:

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

Điều này rời khỏi ngăn xếp như sau ở cuối mã:

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

được in tự động để xuất ra dưới dạng

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

Hãy thử ở đây (Sao chép mã và chạy nó)


1
điều "15 ký tự đầu tiên" đến từ F? Có phải đó là cách nó biết số 15?
vijrox

1
Vâng, af là 10-15.
Jacob

122

LOLCODE: 109 (105 với chính tả "đúng")

LOLCODE không phải là một ngôn ngữ tuyệt vời để chơi golf, đặc biệt là khi bạn mất tất cả vẻ đẹp và biểu cảm khi rút ngắn mã.

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

Kiểm tra nó bằng loljs

Đây là biểu hiện ưa thích của tôi, nặng 187 ký tự (khoảng trắng được thêm vào cho rõ ràng):

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

15
Tôi chỉ biết rằng sẽ có câu trả lời LOLCODE cho vấn đề này. BTW, kan u wryt n lwrcase insyd t kwotez? KTHXBYE.
Cấp sông St

2
Tôi đã thử viết một câu trả lời LOLCODE cho một thử thách khác trong một thời gian trước, nhưng nó quá dài dòng cho việc đánh gôn, và nó thiếu cấu trúc dữ liệu phong nha và khả năng tạo ra các chức năng phức tạp, do đó hạn chế nỗ lực của tôi!
tôi báo động người ngoài hành tinh

3
Câu trả lời này đã cho tôi một sự thôi thúc để tải xuống LOCODE và thực sự học nó đúng cách.
Pharap

2
Điều đó thật tuyệt!!
AStopher

89

Mathicala- lời chúc sinh nhật mã vạch - cách quá nhiều byte

Điều này in những câu thơ và đọc to chúng.

chúc mừng sinh nhật

Chúc mừng sinh nhật bạn
Chúc mừng sinh nhật bạn
Chúc mừng sinh nhật Kính gửi Mathicala
Chúc mừng sinh nhật bạn

StringReplacethay thế mỗi dấu phẩy bằng một NewLine. Mã vạch không thể chứa các ký tự điều khiển.


13
Tôi không thể thấy nút mã vạch trên bàn phím của mình! Làm thế nào tôi có thể kiểm tra điều này?
matjoyce

17
Tôi thích rằng có một 10mã vạch (góc dưới bên phải), nhìn thấy nó BarcodeRecognizeđã được giới thiệu trong Mathicala 10. ^^
Martin Ender

Đúng! Tôi đã không nhận thấy điều đó.
DavidC

11
Tôi thực sự đã quét nó với một đầu đọc mã QR. Nó có thêm khoảng trắng sau mỗi dấu phẩy, bạn không thể lưu byte nếu bạn rồ, chờ đã. Đừng bận tâm.
Timwi

55

TI-Basic, 53 byte

Chà, vì mọi người đang đưa ngôn ngữ lập trình yêu thích của họ lên, tôi cũng có thể thêm một trong những mục yêu thích cũ của mình. Tôi đã dành rất nhiều thời gian trong nhiều năm (trước khi tôi tốt nghiệp ngôn ngữ lập trình thực tế) gõ các lệnh vào một cửa sổ bằng một nửa kích thước của một chiếc điện thoại thông minh.

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

Máy tính của tôi không hỗ trợ các chữ cái viết thường và các biến duy nhất có thể là các chuỗi là Str1, Str2, v.v.


Hương vị nào của TI-Basic? Tôi đã thực sự quen thuộc với nó trên TI-84.
Jesan Fafon

7
Luôn luôn tốt đẹp để xem TI-Basic. Đây có vẻ là tiêu chuẩn TI TI Basic, trong đó mọi biểu thức được lưu trữ tự động vào Ans, có thể được sử dụng một chiến lược tối ưu hóa kỳ lạ và khó thực hiện. Tôi cũng đã bắt đầu lập trình với ngôn ngữ tuyệt vời này.
codebreaker

4
Lưu ý cho người chỉnh sửa: bạn có thể đăng bất kỳ thay đổi nào (trong trường hợp này là mất 8 ký tự) trong các bình luận thay vì chỉ chỉnh sửa nó không? Điều đó sẽ khiến tôi cảm thấy như đây vẫn là câu trả lời của tôi.
Căng thẳng Maniac

2
+1 !! đó là cách tôi học lập trình quá. Tôi đã xây dựng Tron cho TI-83: ​​D mặc dù nó khá chậm, do đó không vui.
thuyền

2
Haha thật tuyệt vời Tôi đã tạo một trò chơi Blackjack cho TI-83. Trong quá trình tôi học tất cả các quy tắc của Blackjack khá mật thiết.
thomasrutter

44

Trầm tích, 60 55 byte

(Đã thêm 1 ký tự vì không có cách nào sedđể hoạt động mà không có đầu vào.)

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

Chắc chắn không phải là một người chiến thắng, được đăng để chứng minh tính năng sedhiếm hoi s///của việc thay thế chỉ là lần xuất hiện thứ 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 (ngắn hơn nhưng không thú vị): 52 ký tự

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

Chạy mẫu:

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

7
sedcâu trả lời luôn là người chiến thắng IMO :)
Chấn thương kỹ thuật số

Câu trả lời ngắn hơn dường như là 51 byte, thay vì 52 bạn đã liệt kê
Taylor Scott

1
@TaylorScott, lời giải thích ở đầu cũng được áp dụng ở đó: Giáp (thêm 1 ký tự vì không có cách nào để thực hiện sedmà không có đầu vào.).
thao tác

Ahh, điều đó có ý nghĩa :)
Taylor Scott

30

C, 73 byte

main(c){for(;c-5;)printf("Happy Birthday %s\n",++c-4?"To You":"Dear C");}

Lỗi không đáng kể: nên được i++-3. (Hiện tại, Dear Dear
cv

không đổi cố định, biến thay đổi. Bất kỳ ý tưởng để rút ngắn mã?
VX

Xin lỗi, không có ý tưởng để rút ngắn nó. C không phải là thế mạnh của tôi. (Tôi đã tìm thấy lỗi vì ngay cả điểm số hiện tại của bạn rất khó tin với tôi đến nỗi tôi đã phải thử.))
manatwork

12
Không phải là "Dear C" (chữ hoa) sao?
TRiG

Tôi cũng nhớ các nhân vật giao thoa ở đó ...
VX

27

Con trăn, 61 60 59

H="\nHappy Birthday to You"
print(H*3)[:60]+"Dear Python"+H

1
Bạn có thể lưu 1 byte - H="\nHappy Birthday to You"print(H*3)[:59]+" Dear Python"+H
Stretch Maniac

1
Đây là con trăn 2.7 hay 3?
George

2
@George: Python 2.7, vì nó không có dấu ngoặc quanh printđối số.
Falko

1
Có đầu ra từ một thông dịch viên tương tác đếm? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
tham lam

1
Bạn có thể tiết kiệm thêm một lần nữa bằng cách xóa khoảng trống trước đó Dearvà thay đổi 59thành 60.
threed

26

sh, 52

H()(echo Happy Birthday ${@-to You});H;H;H Dear sh;H

3
Với mở rộng tham số giá trị mặc định chỉ có 53 ký tự : H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
thao tác

Ôi rất tốt @manatwork!
Chấn thương kỹ thuật số

2
Bạn có thể bỏ qua dấu hai chấm trong phần mở rộng tham số - hoạt động nếu tham số không bao giờ được đặt, trong khi :-cũng bao gồm các trường hợp khi nó được đặt nhưng trống

@professorfish Nice - cảm ơn, tôi không biết điều đó!
Chấn thương kỹ thuật số

@DigitalTrauma Một nơi tốt để tìm nếu bạn cần lưu các ký tự là wiki.bash-hackers.org/syntax/pe - có một danh sách tất cả các cú pháp mở rộng tham số

22

ArnoldC , 228 byte

Hãy làm cho Arnold Schwarzenegger hát ...

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

đầu ra:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear ArnoldC
Happy Birthday to you


@squeamishossifrage lol, đã sửa.
Wasi

16
Có lẽ bạn có thể thêm một lisp Ahnold! Hahpy Birfdaygiảm số lượng nhân vật xuống 4.
La bàn


19

Ngôn ngữ lập trình Shakespeare , 3429 byte

không ai sẽ bị mất trí đủ để tham gia một thử thách với SPL, vì vậy ...

Lời nói của riêng tôi, một thời gian trước đây. Tuy nhiên, ai đó đã mất trí đủ để làm điều đó. Ừ ừ tôi biết. Quá nhiều byte. Nhưng SPL xứng đáng được đưa vào đây, tôi nghĩ vậy. Và tin tôi đi, tôi đã thực hiện một nỗ lực rất lớn để "đánh gôn" chương trình này, đó là lý do tại sao nó hơi lặp đi lặp lại và sử dụng hầu hết các từ giống nhau (tôi luôn có thể làm theo gợi ý của DLosc , nhưng điều đó quá cực kỳ đối với tôi) .

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]

Ý nghĩa của tất cả điều này?

OK, nếu bạn tò mò về cách tất cả những thứ này được cho là hoạt động, hãy để tôi thử và giải thích lý do của tôi. Thứ nhất, các biến. Họ phải đến từ các vở kịch của Shakesperian và, vì số lượng tharacter rất quan trọng, chúng tôi phải chọn những người nhỏ; do đó, AjaxFord xuất hiện. Họ cần một mô tả sau khi được khai báo (được bỏ qua, nhưng vẫn); Tôi đã có thể sử dụng một chữ cái, nhưng heh.

Act I, Cảnh I

var Ajax, Ford; Ford = 0;

Chúng tôi mang các biến vào giai đoạn và AjaxnóiFord rằng giá trị của anh ta sẽ là 0.

Act I, Cảnh II

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

OK, nếu giá trị được lưu trữ trong Ford lớn hơn 3, chương trình sẽ nhảy đến Cảnh V; Mặt khác, giá trị của nó được tăng lên.

Act I, Cảnh 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;

Tải và tải các dòng. Ý tưởng là tìm hiểu giá trị được lưu trữ Ford, thực hiện tải và tải các phép toán số học để lấy số ASCII của các chữ cái mong muốn, sau đó chúng tôi báo cho trình biên dịch xuất số ở dạng ký tự. Đó là cách bạn viết Happy Birthday. Có một ifcảnh bên trong cảnh này: ý tưởng là kiểm tra xem đây có phải là cụm từ thứ ba của bài hát không; nếu có, chúng tôi nhảy đến Cảnh IV; nếu không, chúng tôi tiếp tục, để viếtto You . Sau đó, chúng tôi quay lại Cảnh II.

Act I, Cảnh 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;

Cách thức hoạt động này tương tự như Cảnh ở trên: ý tưởng là viết Dear SPL.

Act I, Cảnh V

End.

Chỉ cần như vậy.

Tôi vẫn chưa tìm thấy nơi nào có thể thử nghiệm, thật không may ...


Tôi nghĩ bạn sẽ có thể lặp lại từ, như thế fat fat fat fat cat. Ngoài ra, tôi sử dụng github.com/drsam94/Spl/blob/master/splc.py để biên dịch mã tách của tôi.
clamchowder314

16

Ruby, 54 byte

Tôi chỉ nghĩ "Này, chưa có câu trả lời nào của Ruby", nhưng rồi một câu xuất hiện vài giây trước câu này. Ồ tốt ...

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

16

Có tình yêu nào với PHP không? 61 59 58 byte

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

Xem nó trong hành động @ http://sandbox.onlinephpfifts.com/


1
Kết hợp việc gán cho $ t với đầu ra đầu tiên của nó:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork

@manatwork đề nghị tuyệt vời, cảm ơn!
MonkeyZeus

58
Không. Không có tình yêu cho PHP. Không bao giờ.
Tên giả

Cùng số byte với các thẻ ngắn:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius

1
Thay thế \nbằng một ngắt dòng thực tế để lưu char.
Christoph

15

Tôi chỉ không thể quyết định chỉ một ngôn ngữ: /

Brainback: 68

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

BrainBack là sự pha trộn giữa BrainFuck và Forth, được thực hiện cho thử thách PCG vào ngày 7 tháng 3 năm 2014

BrainFuck mở rộng : 79

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

Sinh nhật của EBF là ngày 16 tháng 7 năm 2010

Sơ đồ: 96

(R5RS, Vợt, R6RS REPL)

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

Đề án ra đời vào tháng 12 năm 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))

Tuy nhiên, cảm thấy đúng hơn khi làm điều này bằng tiếng Pháp (86):

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

Đầu ra:

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

Sinh nhật của Zozotez là ngày 19 tháng 7 năm 2011


4
+1 cho "Chúc mừng sinh nhật thân yêu Extended Brainfuck", có lẽ là tên ngôn ngữ tốn nhiều công sức nhất ở đây. Tuy nhiên, chương trình là một phần kích thước tương đương với ngôn ngữ gốc. Và đối với Zozotez, tiếng Pháp thực sự nghe hay hơn, mặc dù nói chung tôi không thích cách người Pháp ép tên người đó thành một dòng giống hệt cho bài hát này.
Cấp sông St

Trong câu trả lời Zozotez của bạn, nó nên được Joyeux anniversaire à Zozotez.
Beta Decay

2
@BetaDecay Theo vợ tôi (người Pháp) thì không nên có giới từ như vậy. Wikipedia tiếng Pháp đồng ý.
Sylwester

14

Cá chết ( 2610 2391 chars)

Đây là gì? Một thử thách đầu ra duy nhất? Nghe có vẻ như đó là một công việc cho Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

Thật không may, vì Deadfish chỉ xuất ra số nguyên, đoạn mã trên xuất ra các biểu diễn ASCII của từng ký tự trong bài hát.

Nếu chúng ta sử dụng các đặc điểm kỹ thuật đó

Lỗi không được thừa nhận: shell chỉ cần thêm một ký tự dòng mới!

sau đó chúng ta có thể đánh golf này xuống còn 2391 ký tự:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

Lưu ý: Deadfish không thực sự là ngôn ngữ yêu thích của tôi, nhưng tôi không thể cưỡng lại: P. Ngoài ra chơi golf trong Deadfish là một câu đố thú vị của riêng mình.


19
Đối với các giá trị nhất định của "niềm vui".
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)

hoặc 79 byte bởi @Ingo Bürk

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

hoặc 71 byte bởi @kapep

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

hoặc chạy trên bàn điều khiển trang này (42 byte)

eval($("#answer-39759 code:first").text())

4
Ngoài ra, phần này còn ngắn hơn: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(bạn vẫn có thể sử dụng promptđể tiết kiệm nhiều hơn)
Ingo Bürk

11
LOL ở đoạn mã cuối cùng ..: D
Trình tối ưu hóa

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
cảnh báo thay cho console.log, cần thêm 2 dấu ngoặc nhưng ngắn hơn: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65

11

R: 70 byte

Có lợi thế pastevà tái chế vector.

writeLines(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")))

cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
mầmcd

@germcd Điều đó không hoàn toàn hiệu quả, vì catthêm khoảng trắng giữa các chuỗi. Vì vậy, bạn kết thúc với một khoảng trắng ở đầu mỗi dòng trừ dòng đầu tiên.
bdzimmer

write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 byte. Đây là giải pháp ban đầu của tôi với 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")Vector tái chế đánh bại tôi một lần nữa.
Vlo

Giảm xuống còn 66 byte `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") tio.run/##K/r/ Kẻ
Nick Kennedy

11

T-SQL, 89 87 byte

Chỉnh sửa: Có lẽ không nên nạo vét những thứ cũ kỹ này, nhưng tôi chỉ nhận thấy một sự thay đổi rõ ràng đối với điều này để lấy lại một vài byte.

Sử dụng STUFF để loại bỏ các phần không mong muốn của chuỗi, chỉ mục bắt đầu được cung cấp bởi các giá trị trong FROMmệnh đề nhân với 3

SELECT STUFF('Happy Birthday to You  Dear SQL',N,8,'')FROM(VALUES(24),(24),(15),(24))S(N)

Cái này hay đấy!
TLama

Đây là một giải pháp SQL tuyệt vời và một mẹo rất hay!
BradC


9

Perl - 58

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

Chạy với:

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

Chỉ để cho vui:

perl -E'for(<HappyBirthday{0,1,2,3}>){s/B/ B/;s/2/ Dear Perl\n/;print s/\d/ To You\n/r}'

6
Thế còn say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024

@ core1024 Tôi không biết bạn có thể làm điều đó với mảng, điều đó thật tuyệt vời. Hãy đăng bài như câu trả lời của riêng bạn!
hmatt1

8

Python 507 byte

in "" "
H ap py- Bir th day -to-Y ou = Happy - B irt hday
- to - Y ou = 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 ứng dụng
y - B irth day -to-Y ou = H a ppy - B ir
"" ".replace (" \ n "," "). thay thế (" "," "). thay thế (" - "," ") .replace (" = "," \ n ") [: 92]

Không giành được bất kỳ giải thưởng nào ... nhưng nếu bạn xem xét nó một cách cẩn thận, có một số nghệ thuật ASCII:

# # # ### ### # # ### ##### ### ##### # # ### # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
#### ##### ### ### # ### # ### # #### # # ##### # #
# # # # # # # # # # # # # # # # # # # # #
# # # # # # # ### ##### # # # # # ### # # # # #

Đây không phải là một ứng cử viên nghiêm trọng.
Esolanging Fruit

3
@ Challenger5 Có, "Tuy nhiên, tôi cũng thưởng cho những bài nộp dí dỏm khác với số phiếu tăng (và tôi khuyến khích mọi người cũng làm như vậy). Vì vậy, mặc dù đây là một cuộc thi đánh gôn, nhưng những câu trả lời không quá ngắn cũng được hoan nghênh . "
Alex

7

PowerShell - 69 64 59

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

và 91

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

và 108

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

6

Ruby, 56

x="Happy Birthday To You
"*4
x[59,6]="Dear Ruby"
puts x

Bạn có thể nội tuyến những thứ?
Trình tối ưu hóa

2
Một phương thức kết thúc bằng =luôn trả về kết quả của biểu thức sau dấu bằng. Nếu tôi đã nội tuyến này, nó sẽ chỉ in "Dear Ruby"( String#[]=là một phương thức).
Anh

1
> Dòng mới trong chuỗi. Được rồi, bây giờ tôi hoàn toàn tin rằng ruby ​​chỉ là ma thuật và là một người nông dân, tôi nên bám lấy con trăn.
sagiksp

6

Tuyệt vời , 151

In Happy Birthdaymỗi lần hbđược gọi, với một trong hai to youhoặc được Dear Marbelousnối thêm, dựa trên việc đầu vào là 0hay 1. Đá cẩm thạch được thông qua hbsẽ không được xuất ra, vì nó sẽ bị kẹt trong bộ đồng bộ hóa &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

Dưới đây là bảng hb, với hex được chuyển đổi thành văn bản ascii: nhập mô tả hình ảnh ở đây


5

CJam, 46 byte

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

Hãy thử nó ở đây.

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

Điều này để lại các mảng sau trên ngăn xếp:

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

Nội dung của ai sẽ được tự động in ngược lại vào cuối chương trình.

Ngoài ra, với một vòng lặp for và cùng một số ký tự:

4{"Happy Birthday "I2="Dear CJam""to You"?N}fI

5
Người nói dối!! ngôn ngữ yêu thích của bạn là Ruby / Mathicala: P
Trình tối ưu hóa

1
@Optimizer Chắc chắn không phải Ruby, có thể là Mathicala, nhưng tôi thậm chí không chắc về điều đó. Đối với lập trình "thực", có lẽ tôi luôn chọn C / C ++ / C #. (Tôi cũng khá chắc chắn, rằng bạn là JS: P.)
Martin Ender

5
bạn đã cho tôi: P: D
Trình tối ưu hóa

5

Haskell: 75

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

Mã đầu ra trong ideone

Haskell một lớp lót: 79

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

Bạn có thể thử một lớp lót trực tuyến tại đây: http://tryhaskell.org/


1
Một lớp lót giúp loại bỏ một nhân vật:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking

danh sách hiểu là rất ít loooonnnnggggg
Alex Reinking

2
Ngoài ra, về mặt kỹ thuật, nó phải putStrLnphù hợp với thông số kỹ thuật (bạn nhận được dấu ngoặc kép với print)
Alex Reinking

2
Các _là không cần thiết bởi vì giá trị trả về của hàm main được vứt bỏ - bạn chỉ nhìn thấy nó trong GHCi
tự hào

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'

1
Qapla '! +1 để sử dụng Var'aQ của tất cả các ngôn ngữ!
WallyWest

5

GolfScript: 54 ký tự

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

Chạy mẫu:

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

Tôi chỉ nhận thấy nó. (Tác dụng phụ nhỏ của việc cố gắng viết mã GolfScript đó trong khoảng 5 ~ 6 giờ.) Cảm ơn, @ MartinBüttner.
manatwork

1
Chúc mừng sinh nhật CodeGolf thân mến ?
Dennis

Grr. Tôi đã mệt mỏi không chỉ khi viết nó, mà cả khi sửa nó. Cảm ơn @Dennis.
manatwork

5

T-SQL (tuân thủ MS): 75

print stuff(replicate('Happy Birthday to You '+char(10),4),62,6,'Dear SQL')

Thật tuyệt ... ước gì tôi đã nghĩ về điều đó :)
MickyT

Ý tưởng tuyệt vời! Lưu thêm 9 byte bằng cách thay thế +char(10)bằng một ngắt dòng bên trong trích dẫn, chỉ cần tạo phần trả về của chuỗi.
BradC

5

C # (75) (73)

Sử dụng System.Diagnosticscho mục đíchDebug.Print

Nâng cấp lên mã của @Abas

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

Nâng cấp lên mã @Tyress ' (83) (76)

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

Đầu ra:

Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear C#
Happy Birthday To You

2
Bạn có thể lưu một vài ký tự bằng cách sử dụng String.Formatvà toán tử ternary. Bạn cũng có thể làm cho nó trông giống như một chương trình C # và sử dụng i++<3; p
FryAmTheEggman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.