En sevdiğiniz programlama diline Happy Birthday söyle


119

En sevdiğiniz programlama dilinin yeni bir doğum günü oldu. Kibar olun ve Happy Birthday şarkısını söyleyin .

Tabii ki, bu dilde bir program yazarak bunu başarmalısınız. Program giriş yapmaz ve aşağıdaki metni standart çıktıya veya isteğe bağlı bir dosyaya yazar:

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

Desteklenen parçayı değiştirmelisiniz (ve destekleri çıkarmalısınız).

Bu bir kod golf - en kısa kod kazanır.

GÜNCELLEME

Sorunun büyük ilgi uyandırmasına sevindim. Puanlama hakkında fazladan bilgi ekleyeyim. Başlangıçta belirtildiği gibi, bu soru bir kod golf, bu yüzden en kısa kod kazanacak. Kazanan bu haftanın sonunda (19 Ekim) toplanacak.

Ancak, diğer esprili sunumları da yukarı oylarla ödüllendiriyorum (ve herkesi de böyle yapmaya teşvik ediyorum). Bu nedenle, bu bir kod golf yarışması olmasına rağmen, çok kısa olmayan cevaplar da açıktır.

Sonuçlar

42 byte uzunluğundaki CJam teslimi ile bu yarışmanın galibi Optimizer'ı tebrik ederim .


2
Programlama dilinin adını bir bayt olarak sayabilir miyiz, çünkü yalnızca JavaScript gibi uzun soluklu bir dilde kodlayan ve C içinde yapan biri için adil görünen gibi görünüyor.
MonkeyZeus

14
Bonbon şarkısı için tüm indirgemelere rağmen neden bu kadar olumlu ? Bu sadece bir meydan okuma kadar sıkıcı.
xnor

10
Muhtemelen bunu belirtmeliyim şarkı telif hakkı ve bu programları dağıtmak DMCA neden olabilir
ucube mandalınızı


4
Cevaplardan en az biri önde gelen bir yeni satır basar . Buna izin var mı?
Dennis

Yanıtlar:


47

CJam, 46 42 bayt

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

Nasıl çalışır:

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

Bu, kodun sonunda yığını aşağıdaki şekilde bırakır:

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

hangi çıkış olarak otomatik olarak basılır

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

Burada dene (Kodu kopyala ve çalıştır)


1
"ilk 15 karakter" olayı F'den mi geliyor? 15 numarayı böyle mi biliyor?
vijrox

1
Evet, af 10-15.
Jacob,

122

LOLKOD: 109 ("doğru" yazımla 105)

LOLCODE, özellikle kodu kısaltırken tüm güzelliğini ve etkileyiciliğini yitirdiğiniz için golf oynamak için harika bir dil değildir.

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

Loljs kullanarak test edin

Bu benim tercihim yorumum, 187 karakter ağırlığında (netlik için eklenen boşluklar):

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
Sadece bunun için bir LOLCODE cevabı olacağını biliyordum. Btw, kan wryt n lwrcase insyd t kwotez? Kthxbye.
Seviye River St

2
Bir süre önce başka bir zorluğa LOLCODE cevabı yazmayı denedim, ancak kod golf oynamak için çok ayrıntılı ve iyi veri yapıları ve karmaşık işlevler oluşturma yeteneğinden yoksun, bu yüzden çabalarımı kısıtladı!
uzaylıyı

3
Bu cevap bana LOCODE'u indirmeye ve gerçekten doğru bir şekilde öğrenmeye teşvik etti.
Pharap

2
Bu harika!!
AStopher

89

Mathematica- barkod doğum günü dilekleri - çok fazla bayt

Bu ayetleri basar ve yüksek sesle okur.

iyi ki doğdun

Mutlu yıllar sana
Mutlu yıllar sana
Mutlu yıllar Sevgili Mathematica
Mutlu yıllar sana

StringReplaceher virgül, bir NewLine ile değiştirilir. Barkodlar kontrol karakterlerini içeremez.


13
Klavyemde bir barkod düğmesi göremiyorum! Bunu nasıl test edebilirim?
matsjoyce

17
10Barkodda (sağ alt köşede) olduğunu BarcodeRecognizeve bunun Mathematica 10'da tanıtıldığını görmeyi seviyorum . ^^
Martin Ender

Evet! Bunu farketmemiştim.
DavidC

11
Aslında bunu bir QR kod okuyucu ile taradım. Her virgülden sonra fazladan boşluk var, eğer baytları kurtaramazsanız, bekleyin. Boşver.
Timwi

55

TI-Basic, 53 bayt

Herkes favori programlama dilini oluşturduğundan eski favorilerimden birini de ekleyebilirim. Yıllar boyunca (gerçek programlama dillerine mezun olmadan önce) bir akıllı telefonun yarısı büyüklüğündeki bir pencereye komut yazmak için çok zaman harcadım.

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

Hesap makinem küçük harfleri desteklemiyor ve karakter dizisi olabilen değişkenler Str1, Str2 vb.


Hangi TI-Basic tadı? TI-84'de buna gerçekten aşina oldum.
Jesan Fafon

7
TI-Basic'i görmek her zaman güzel. Bu, tuhaf ve takip etmesi zor bir optimizasyon stratejisi olarak kullanılabilecek herhangi bir ifadenin otomatik olarak Ans'a kaydedildiği standart 8x TI-Basic gibi görünüyor. Ayrıca bu harika dille programlamaya başladım.
kod kırıcı

4
Editörlere not: Yorumlarda herhangi bir değişiklik (bu durumda 8 karakter kaybı) gönderebilir misiniz? Bu bana hala cevabım böyle hissettirirdi.
Stretch Maniac,

2
+1 !! Ben de programlamayı bu şekilde öğrendim. TI-83: ​​D için Tron'u yaptım ama oldukça yavaştı, bu yüzden eğlenceli değildi.
Nacht

2
Haha bu harika. TI-83 için bir Blackjack oyunu yaptım. Bu süreçte Blackjack'in tüm kurallarını çok yakından öğrendim.
thomasrutter

44

Sed, 60 55 bayt

(1 karakter eklendi, çünkü sedgirdi olmadan çalışmanın bir yolu yok .)

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

Kesinlikle bir kazanan, göstermek için yayınlanan sed'in ender s///sadece değiştirme özelliğini n inci oluşumu.

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 (daha kısa ama ilginç değil): 52 karakter

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

Örnek çalışma:

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
sedcevaplar her zaman kazanır IMO :)
Digital Trauma

Kısa cevap, listelediğiniz 52 yerine 51 bayt olarak görünmektedir
Taylor Scott

1
@TaylorScott, tepedeki açıklama orada da uygulandı: “(1 karakter eklendi çünkü sedgirdi olmadan çalışmanın bir yolu yoktu .” ”.
Manatwork

Ahh, bu mantıklı :)
Taylor Scott

30

C, 73 bayt

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

Önemsiz hata: olmalı i++-3. (Şu anda “Sevgili c”, 2. satırda belirir.) (Tek bir değişken kullanırken, ben “c” olarak adlandırırım.)
manatwork

sabit sabit, değişken değişti. Kodu kısaltmak için bir fikrin var mı?
VX

Üzgünüz, kısaltmak için hiçbir fikrim yok. C benim gücüm değil. (
Hatayı

12
"Sevgili C" (büyük harf) olmamalı mı?
TRiG

Ben de orada birleşme karakterlerini özlüyorum ...
VX

27

Python, 61 60 59

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

1
1 bayt - H="\nHappy Birthday to You"veprint(H*3)[:59]+" Dear Python"+H
Stretch Maniac

1
Bu piton 2.7 mi yoksa 3 mü?
George,

2
@ George: Python 2.7, printbağımsız değişken etrafında parantez olmadığı için .
Falko

1
Etkileşimli bir tercümandan elde edilen çıktılar sayılıyor mu? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
üçlü

1
Daha önce boşluk kaldırarak bir daha kaydedebilir Dearve değişen 59etmek 60.
üçlü

26

sh, 52

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

3
Sadece 53 karakter varsayılan değer parametre genişleme ile: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
Manat çalışması

Ooh @manatwork çok iyi!
Dijital Travma

2
:-

@professorfish Nice - teşekkürler, bunu bilmiyordum!
Dijital Travma

@DigitalTrauma Karakterleri kaydetmeniz gerekip gerekmediğine bakmak için iyi bir yer wiki.bash-hackers.org/syntax/pe - bütün parametre genişletme sözdizimlerinin bir listesi var

22

ArnoldC , 228 bayt

Yapmak Sağlar Arnold Schwarzenegger şarkı ...

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

çıktı:

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


@squeamishossifrage lol, sabit.
Wasi,

16
Belki bir Ahnold lisp ekleyebilirsiniz! Hahpy Birfdaykarakter sayısını 4'e düşürür.
Pusula


19

Shakespeare Programlama Dili , 3429 bayt

hiç kimse SPL ile bir mücadelesine girebilecek kadar demode olmayacak , bu yüzden ...

Kendi sözlerim, bir süre önce. Ve yine, birileri bunu yapacak kadar zorlandı. Evet evet biliyorum. Çok fazla bayt var. Fakat SPL burada bulunmayı hak ediyor sanırım. Ve inan bana, bu programı "golf" yapmak için çok çaba sarf ettim, bu yüzden biraz tekrarlı ve çoğunlukla aynı kelimeleri kullanıyor ( DLosc'un önerisini her zaman izleyebilirdim , ama bu benim için bile çok fazla olurdu) .

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]

Bütün bunların anlamı?

Tamam, tüm bunların nasıl çalışması gerektiğini merak ediyorsanız, mantığımı açıklamaya çalışayım. İlk olarak, değişkenler. Shakesperian oyunlarından gelmeliler ve tharacter sayısı önemli olduğu için küçük olanları seçmeliyiz; öyleyse Ajaxve Fordgörünür. Bildirildikten sonra bir açıklamaya ihtiyaçları var (bu yoksayılıyor, ancak yine de); Tek bir mektup kullanabilirdim ama heh.

Hareket Ben Sahne I

var Ajax, Ford; Ford = 0;

Değişkenleri sahneye çıkarır ve değerinin 0 olacağını Ajaxsöyleriz Ford.

Kanun I, Sahne II

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

Tamam, saklanan değer Ford3'ten büyükse, program Scene V'e atlar; diğer yandan, değeri artırılır.

Bölüm I, Sahne 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;

Yükler ve çizgiler yükler. Buradaki amaç, ASCII'nin Fordistenilen harf sayısını almak için, üzerinde kayıtlı değerde dolaşmak, aritmetik işlemlerin yüklerini ve yüklerini yapmaktır, ardından derleyiciye sayıyı karakter biçiminde vermesini söyleriz. İşte böyle yazıyorsun Happy Birthday. ifBu sahnenin içinde bir iç kısım var: fikir, şarkının üçüncü ifadesi olup olmadığını kontrol etmektir; öyleyse, Scene IV'e atlarız; Aksi halde, yazmaya devam ediyoruz to You. Ondan sonra Scene II'ye geri dönüyoruz.

Kanun I, Sahne 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;

Bunun çalışma şekli yukarıdaki Sahneye benzer: fikir yazmaktır Dear SPL.

Kanun I, Sahne V

End.

Aynen böyle.

Hala test edilebilecek bir yer bulamadım, ne yazık ki ...


Bence kelimeleri tekrarlayabilmelisin fat fat fat fat cat. Ayrıca, spl kodumu derlemek için github.com/drsam94/Spl/blob/master/splc.py adresini kullanıyorum .
clamchowder314

16

Ruby, 54 bayt

Sadece "Hey, henüz Ruby cevabı yok" demiştim, fakat bir tanesi bundan birkaç saniye önce ortaya çıktı. Oh iyi...

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

16

PHP için aşk var mı? 61 59 58 bayt

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

Eylem @ http://sandbox.onlinephpfunctions.com/ bakın


1
İlk çıktısı ile $ t ödevini birleştirin:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork

@ yönetim mükemmel öneri, teşekkürler!
MonkeyZeus

58
Hayır. PHP için sevgi yoktur. Hiç.
Sahte İsim

Kısa etiketli aynı bayt sayısı:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius

1
\nBir karakter kaydetmek için gerçek bir satır sonu ile değiştirin .
Christoph,

15

Sadece bir dile karar veremiyorum:

BrainBack: 68

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

BrainBack, PCG mücadelesi için yapılan BrainFuck ve Forth arasında bir karışımdır. 7 Mar 2014

Genişletilmiş BrainFuck : 79

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

EBF'nin doğum günü 16 Tem 2010

Şema: 96

(R5RS, Raket, R6RS REPL)

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

Şema Aralık 1975'te doğdu (Not: PDF)

Zozotez : 96

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

Ancak, bunu Fransızca yapmakta daha doğru hissediyor (86):

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

Çıktı:

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

Zozotez'in doğum günü 19 Tem 2011


4
"Mutlu yıllar sevgili Extended Brainfuck" için +1, muhtemelen en zahmetli dil ismi. Ve yine de program, ana dilin eşdeğerinin büyüklüğünün bir kısmıdır. Ve Fransızca'da gerçekten daha iyi ses çıkaran Zozotez için, genel olarak Fransızların kişinin adını bu şarkı için özdeş bir çizgi haline getirme şeklini pek sevmiyorum.
Level River St

Zozotez cevabında, olmalı Joyeux anniversaire à Zozotez.
Beta Çürümesi

2
@ BetaDecay (Fransız) karıma göre böyle bir edat olmadan olmalı. Fransızca Vikipedi kabul eder.
Sylwester

14

Ölü balık ( 2610 2391 karakter)

Bu nedir? Bir çıktı sadece sorun mu var? Ölüdeniz için bir iş gibi geliyor !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

Ne yazık ki, Deadfish yalnızca tamsayılar çıktığı için yukarıdaki kod, şarkıdaki her karakterin ASCII gösterimlerini çıkarır.

Eğer şartnameyi kullanırsak

Hatalar onaylanmadı: kabuk sadece yeni satır karakteri ekler!

o zaman bunu 2391 karaktere indiririz:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

Not: Deadfish aslında en sevdiğim dil değil, ama direnemedim: P. Ayrıca Deadfish'te golf oynamak kendi başına eğlenceli bir bilmecedir.


19
"Eğlence" nin belirli değerleri için.
Charles Wood

13

JS, 83 bayt

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

veya @Ingo Bürk tarafından 79 bayt

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

veya @ bykapep'te 71 bayt

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

veya bu sayfada konsoldan çalıştırın (42 bayt)

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

4
Ayrıca, bu daha kısa: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(hala promptdaha fazla tasarruf etmek için kullanabilirsiniz )
Ingo Bürk

11
Son kod parçasında LOL ..: D
Doktoru

1
76:t='to you\n';console.log(h='Happy birthday',t+h,t+h,'dear JavaScript\n'+h,t)
NinjaBearMonkey 13:14

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

3
console.log yerine uyarı, 2 ayraç daha gerekiyor, ancak daha kısa: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65 14:14

11

R: 70 bayt

pasteVektör geri dönüşümü ve avantajlarından yararlanır .

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'))
germcd

@germcd Bu oldukça çalışmaz, çünkü catdizgilerin arasına boşluk ekler. Böylece, her satırın başında, birincisi hariç bir boşluk bırakacaksınız.
bdzimmer

write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 bayt. İşte benim orijinal çözümüm olan 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")Vector geri dönüşüm ile beni tekrar atıyor.
Vlo

66 byte `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") düşürüldü tio.run/##K/r/…
Nick Kennedy

11

T-SQL, 89 87 bayt

Düzenleme: Muhtemelen bu eski şeyleri araştırmamalıyım, ancak birkaç bayt geri almak için bunun bariz bir değişikliği olduğunu fark ettim.

Dizenin istenmeyen bölümlerini kaldırmak için STUFF kullanılarak, başlangıç ​​dizini, FROMmaddede 3 ile çarpılan değerler tarafından sağlanır.

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

Bu güzel!
TLama

Bu mükemmel bir SQL çözümü ve çok hoş bir numara!
BradC

9

GNU dc, 51

[Happy Birthday to You]d[Happy Birthday Dear dc]rdf

3
Ben de denedim dc, ama neredeyse ham sürüm bile daha kısa: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 karakter.
Manatwork

Bugün bir yuvarlanmada @ manatwork :)
Digital Trauma

3
Bugün bu yazı nedeniyle dc'nin varlığını öğrendim ve mükemmel.
Caleb Paul

9

Perl - 58

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

Çalıştır:

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

Sadece eğlence için:

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

6
Nasıl hakkında say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024

@ core1024 Bunu dizilerle yapabileceğinizi bilmiyordum, bu harika. Kendi cevabınızı göndermek için çekinmeyin!
hmatt 1

8

Python 507 bayt

"" "yazdır
H a py- th-day-a-y ou = mutlu - b is hday
- to - Y ou = H appy - B doğum günü - D e
ar-P ython = Ha ppy - Bir yüce ya da a ya sen -
B irthday - - - Y = H uygulaması
y - B dördüncü gün-to-Y ou = H a ppy - B ir
"" ".replace (" \ n "," "). değiştir (" "," "). değiştir (" - "," ") .replace (" = "," \ n ") [: 92]

Herhangi bir ödül kazanmamak ... ama dikkatlice bakarsanız, bazı ASCII sanatı var:

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

Bu ciddi bir rakip değil.
Esolanging Fruit

3
@ Challenger5 Evet, "Ancak, diğer esprili sunumları da yukarı oylarla ödüllendiriyorum (ve herkesi de bunu yapmaya teşvik ediyorum). Bu nedenle, bu bir kod golf yarışması olmasına rağmen, kısa olmayan cevaplar da memnuniyetle karşılanıyor. ."
Alex

7

PowerShell - 69 64 59

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

ve 91

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

ve 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

Satır içi işler yapamaz mısın?
Doktor

2
İçinde biten bir yöntem =her zaman eşittir işaretinden sonraki ifadenin sonucunu döndürür. Bunu sıraladıysam, yalnızca yazdırırdı "Dear Ruby"( String#[]=bir yöntemdir).
britishtea

1
> Dizgelerde yeni satırlar. Tamam, şimdi tamamen yakutun sadece vudu büyüsü olduğuna ve köylü olarak pitona yapmam gerektiğine ikna oldum.
sagiksp

6

Mermer , 151

Baskılar Happy Birthdayher hbbiri ile adlandırılan, to youya da Dear Marbelousgiriş olmasına bağlı olarak eklenmiş, bu 0ya da 1. İçerisindeki mermer hb, senkronizatörde sıkışıp kalacağından çıkış olarak alınmayacaktır &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

hbAscii metne dönüştürülen hex ile tahta aşağıdadır : görüntü tanımını buraya girin


5

CJam, 46 bayt

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

Burada dene.

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

Bu, aşağıdaki diziyi yığında bırakır:

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

Program sonunda kimin içeriği otomatik olarak arka arkaya yazdırılır.

Alternatif olarak, for-loop ve aynı karakter sayısı ile:

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

5
Yalancı!! En sevdiğiniz dil Ruby / Mathematica: P
Doktoru

1
@Optimizer Kesinlikle Ruby değil, belki Mathematica, ama bundan bile emin değilim. "Gerçek" programlama için her zaman C / C ++ / C # 'yi seçerdim. (Ben de oldukça eminim, seninki JS:
Martin Ender

5
beni aldın: P: D
Doktoru

5

Haskell: 75

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

İdeone kod çıktısı

Haskell bir liner: 79

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

Bir lineri çevrimiçi olarak burada deneyebilirsiniz: http://tryhaskell.org/


1
Bir karakter tıraş olan bir liner:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Alex Reinking

listesi kavramalar soooo loooonnnnggggg
Alex Reinking

2
ayrıca, teknik olarak teknik özelliklere putStrLnuygun olmalıdır (ile çift tırnak alırsınız print)
Alex Reinking

2
Bu _gerekli değildir, çünkü
main'in

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
Selamlar! Dillerinde Var'aQ kullanmak için +1!
WallyWest

5

GolfScript: 54 karakter

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

Örnek çalışma:

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

Sadece farkettim. (Bu GolfScript kodunu yaklaşık 5 ~ 6 saat boyunca yazmaya çalışmanın küçük yan etkisi.) Teşekkürler, @ MartinBüttner.
Manat işi

1
Doğum Günün Kutlu Olsun Sevgili CodeGolf ?
Dennis,

Grr. Sadece yazdığımda değil, düzeltdiğimde de yorgundum. @Dennis teşekkürler.
Manatwork

5

T-SQL (MS uyumlu): 75

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

Güzel bir ... keşke bunu düşünebilseydim :)
MickyT

İyi fikir! +char(10)Alıntı içinde bir satır sonu ile değiştirerek 9 bayttan daha fazla tasarruf edin, sadece dizenin dönüş kısmını yapın.
BradC

5

C # (75) (73)

System.DiagnosticsAmacıyla kullanmakDebug.Print

@Abbas 'koduna yükseltin

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

@Tyress 'koduna yükseltin (83) (76)

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

Çıktı:

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

2
String.FormatVe üçlü operatörü kullanarak birkaç karakter kaydedebilirsiniz . Bunu bir C # programına i++<3
benzetip
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.