Пой С Днем Рождения на свой любимый язык программирования

119

У вашего любимого языка программирования только что был день рождения. Будь милым и пой песню Happy Birthday .

Конечно, вы должны сделать это, написав программу на этом языке. Программа не принимает никаких данных и записывает следующий текст в стандартный вывод или произвольный файл:

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

Вы должны заменить часть в скобках (и опустить скобки).

Это код гольфа - выигрывает самый короткий код.

ОБНОВИТЬ

Я рад, что этот вопрос вызвал большой интерес. Позвольте мне добавить дополнительную информацию о выигрыше. Как было заявлено изначально, этот вопрос относится к коду гольфа, поэтому самый короткий код выиграет. Победитель будет выбран в конце этой недели (19 октября).

Тем не менее, я также награждаю другие остроумные представления повышающими голосами (и я призываю всех сделать то же самое). Поэтому, хотя это соревнование по коду-гольфу, не очень короткие ответы также приветствуются.

Результаты

Поздравляет оптимизатор , победитель этого конкурса с его 42 байтами длинным, CJam представления .

Дэвид Франк
источник
2
Можем ли мы считать название языка программирования одним байтом, потому что это может показаться справедливым только для людей, кодирующих на многословном языке, таких как JavaScript, против кого-то, кто делает это на C. Мы действительно ищем самую креативную логику, верно?
MonkeyZeus
14
Зачем все положительные отзывы за это, несмотря на все отрицательные голоса за песню Bonbon ? Это такой же скучный вызов.
xnor
10
Я должен, вероятно, упомянуть, что песня защищена авторским правом, и распространение этих программ может вызвать DMCA
странный урод
4
По крайней мере один из ответов печатает ведущую строку. Это разрешено?
Деннис

Ответы:

47

CJam, 46 42 байта

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

Как это устроено:

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

Это оставляет стек следующим образом в конце кода:

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

которые печатаются автоматически для вывода в виде

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

Попробуйте здесь (скопируйте код и запустите)

оптимизатор
источник
1
«Первые 15 символов» происходит от F? это то, как он знает число 15?
Виджрокс
1
Да, 10-15.
Джейкоб
122

ЛОКОЛОД: 109 (105 с «правильным» написанием)

LOLCODE не очень хороший язык для игры в гольф, тем более что вы теряете всю красоту и выразительность при сокращении кода.

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

Проверьте это с помощью loljs

Это мое предпочтительное исполнение весом 187 символов (для ясности добавлены пробелы):

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
Я просто знал, что ЛОЛКОД будет ответом на это. Кстати, а ты не хочешь сделать это? KTHXBYE.
Уровень Река St
2
Некоторое время назад я пытался написать ответ LOLCODE на другой вызов, но он слишком многословен для игры в код, и в нем отсутствуют приличные структуры данных и способность создавать сложные функции, так что это довольно ограничивало мои усилия!
Я встревожил пришельца
3
Этот ответ побудил меня скачать LOCODE и действительно выучить его правильно.
Pharap
2
Это здорово!!
AStopher
89

Mathematica - пожелания дня рождения со штрих-кодом - слишком много байтов

Это печатает стихи и читает их вслух.

с днем ​​рождения

С Днем Рождения
С Днем Рождения
С Днем Рождения Уважаемый Mathematica
С Днем Рождения Вас

StringReplaceзаменяет каждую запятую на NewLine. Штрих-коды не могут содержать управляющие символы.

DavidC
источник
13
Я не вижу кнопку штрих-кода на моей клавиатуре! Как я могу проверить это?
matsjoyce
17
Мне нравится, что 10в штрих-коде (нижний правый угол) есть знак , который BarcodeRecognizeбыл введен в Mathematica 10. ^^
Мартин Эндер,
Да! Я этого не заметил.
DavidC
11
Я на самом деле сканировал это с помощью считывателя QR-кода. У него есть лишние пробелы после каждой запятой, не могли бы вы сохранить байты, если вы ... о, подождите. Неважно.
Тимви,
55

TI-Basic, 53 байта

Ну, так как все выкладывают свой любимый язык программирования, я мог бы также добавить один из моих старых любимых. За эти годы я потратил много времени (до того, как перешел на настоящие языки программирования), набирая команды в окне, вдвое меньше смартфона.

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

Мой калькулятор не поддерживает строчные буквы, и единственными переменными, которые могут быть строками, являются Str1, Str2 и т. Д.

Стрейч маньяк
источник
Какой вкус TI-Basic? Я действительно познакомился с ним на TI-84.
Джезан Фафон
7
Всегда приятно видеть TI-Basic. Похоже, это стандартный 8x TI-Basic, где любое выражение автоматически сохраняется в Ans, что может использовать странную и трудную для понимания стратегию оптимизации. Я также начал программировать на этом удивительном языке.
код
4
Примечание для редакторов: можете ли вы публиковать какие-либо изменения (в данном случае потеря 8 символов) в комментариях, а не просто редактировать их? Это заставило бы меня чувствовать, что это все еще мой ответ.
Стрейч Маньяк,
2
+1 !! Вот так я и научился программировать. Я построил Tron для TI-83: ​​D, он был довольно медленным, и поэтому не веселым.
Ночь
2
Ха-ха, это круто. Я сделал игру в Блэкджек для TI-83. В процессе я выучил все правила игры в Блэкджек довольно близко.
Томасруттер
44

Sed, 60 55 байт

(1 символ добавлен, потому что нет способа заставить sedработать без ввода.)

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

Конечно, не победитель, размещенный, чтобы продемонстрировать sedредкую s///особенность замены только 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

Сед (короче, но не интересно): 52 символа

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

Образец прогона:

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
источник
7
sedответы всегда победители IMO :)
Digital Trauma
Более короткий ответ - 51 байт, а не 52, которые вы перечислили
Тейлор Скотт,
1
@TaylorScott, там же применено объяснение вверху: «(добавлен 1 символ, потому что нет способа заставить sedработать без ввода.)».
manatwork
Ааа, это имеет смысл :)
Тейлор Скотт
30

C 73 байта

main(c){for(;c-5;)printf("Happy Birthday %s\n",++c-4?"To You":"Dear C");}
VX
источник
Незначительная ошибка: должно быть i++-3. (В настоящее время «Dear c» появляется во 2-й строке.) (Используя одну переменную, я бы назвал ее «c».)
manatwork
константа исправлена, переменная изменена. Есть идеи по сокращению кода?
VX
Извините, не знаю, сократить это. С не моя сила. (Я нашел ошибку, потому что даже ваш текущий счет настолько невероятен для меня, что мне пришлось его опробовать.;))
manatwork
12
Разве это не должно быть "Дорогой C" (заглавные буквы)?
TRiG
Я также скучаю по символам взаимодействия ...
VX
27

Питон, 61 60 59

H="\nHappy Birthday to You"
print(H*3)[:60]+"Dear Python"+H
Фалько
источник
1
Вы можете сохранить 1 байт H="\nHappy Birthday to You"иprint(H*3)[:59]+" Dear Python"+H
Stretch Maniac
1
Это питон 2,7 или 3?
Джордж
2
@ Джордж: Python 2.7, так как в нем нет скобок вокруг printаргумента.
Фалько
1
Имеет ли значение выход из интерактивного переводчика? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Three
1
Вы можете сохранить еще один, удалив пространство перед Dearи изменив 59на 60.
Three
26

ш, 52

H()(echo Happy Birthday ${@-to You});H;H;H Dear sh;H
Цифровая травма
источник
3
С расширением параметра значения по умолчанию только 53 символов: H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H.
manatwork
О, очень хорошо @manatwork!
Цифровая травма
2
Вы можете опустить двоеточие в расширении параметра - это работает, если параметр никогда не :-
@professfishfish Хорошо - спасибо, я этого не знал!
Цифровая травма
@DigitalTrauma Хорошее место для поиска, если вам нужно сохранить символы, это wiki.bash-hackers.org/syntax/pe - здесь есть список всех синтаксисов расширения параметров
22

ArnoldC , 228 байт

Давайте заставим Арнольда Шварценеггера петь ...

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

выход:

Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear ArnoldC
Happy Birthday to you
Был ли я
источник
1
Invalid input '\', expected '"' (line 2, pos 40)
брезгливое оссифраж
@squeamishossifrage lol, исправлено.
Васи
16
Возможно, вы можете добавить Ahnold Lisp! Hahpy Birfdayуменьшает количество персонажей на 4.
Компас
19

Язык программирования Шекспира , 3429 байт

никто не будет настолько безумен, чтобы принять участие в состязании по с SPL, так что ...

Мои собственные слова, некоторое время назад. И все же, кто-то был достаточно сумасшедшим, чтобы сделать это. Да, да, я знаю. Слишком много байтов. Но SPL заслуживает включения сюда, я думаю. И поверьте мне, я приложил огромные усилия, чтобы «сыграть в гольф» эту программу, поэтому она несколько повторяется и использует в основном одни и те же слова (я всегда мог последовать совету DLosc , но это было бы слишком экстремально даже для меня) ,

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]

Смысл всего этого?

Хорошо, если вам интересно, как все это должно работать, позвольте мне попытаться объяснить мои рассуждения. Во-первых, переменные. Они должны происходить из шекспировских пьес, и, поскольку важен счет тарактеров, мы должны выбирать маленькие; Таким образом Ajaxи Fordпоявляются. После объявления им нужно описание (которое игнорируется, но все же); Я мог бы использовать одну букву, но хе.

Акт I, Сцена I

var Ajax, Ford; Ford = 0;

Мы выводим переменные на сцену и заставляем Ajaxсказать, Fordчто его значение будет равно 0.

Акт I, Сцена II

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

ОК, если значение, хранящееся в Ford, больше 3, программа переходит к сцене V; в противном случае его значение увеличивается.

Акт I, Сцена 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;

Нагрузки и грузы линий. Идея состоит в том, чтобы поиграться со значением, хранящимся в нем Ford, выполняя загрузку и загрузку арифметических операций, чтобы получить число ASCII нужных букв, а затем мы сообщаем компилятору выводить число в символьной форме. Вот как ты пишешь Happy Birthday. Там в ifвнутри этой сцены: идея заключается в том , чтобы проверить , является ли это третья фраза песни; если это так, мы переходим к сцене IV; в противном случае мы продолжим писать to You. После этого мы возвращаемся к сцене II.

Акт I, Сцена 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;

То, как это работает, похоже на сцену выше: идея в том, чтобы писать Dear SPL.

Акт I, Сцена V

End.

Просто так.

Я до сих пор не нашел места, где это можно было бы проверить, к сожалению ...

Родольфо Диас
источник
Я думаю, вы должны быть в состоянии повторить слова, как fat fat fat fat cat. Кроме того, я использую github.com/drsam94/Spl/blob/master/splc.py, чтобы скомпилировать мой код spl.
clamchowder314
16

Рубин, 54 байта

Я просто подумал: «Привет, пока нет ответа Ruby», но потом один появился за несколько секунд до этого. Ну что ж...

puts h="Happy Birthday to You",h,h[0,15]+"Dear Ruby",h
Мартин Эндер
источник
16

Любая любовь к PHP? 61 59 58 байт

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

Посмотрите это в действии @ http://sandbox.onlinephpfunctions.com/

MonkeyZeus
источник
1
Объедините присвоение $ t с его первым выводом:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
manatwork
@ Manatwork отличное предложение, спасибо!
MonkeyZeus
58
Нет, любви к PHP нет. Когда-либо.
Фальшивое имя
Одинаковое количество байтов с короткими тегами:<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
AmadeusDrZaius
1
Замените \nфактический разрыв строки, чтобы сохранить символ.
Кристоф
15

Я просто не могу выбрать только один язык: /

BrainBack: 68

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

BrainBack - это смесь BrainFuck и Forth, созданная для участия в PCG Mar 7, 2014

Расширенный BrainFuck : 79

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

День рождения EBF - 16 июля 2010

Схема: 96

(R5RS, Racket, R6RS REPL)

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

Схема родилась в декабре 1975 г. (NB: PDF)

Зозотез : 96

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

Тем не менее, это более правильно делать это по-французски (86):

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

Выход:

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

Zozotez 'день рождения 19 июля 2011

Сильвестер
источник
4
+1 за «С днем ​​рождения, дорогой расширенный мозг», наверное, самое трудоемкое название языка здесь. И все же программа является частью размера эквивалента для родительского языка. И для Zozotez, который действительно звучит лучше на французском языке, хотя в целом мне не очень нравится, как французы сжимают имя человека в идентичную строку для этой песни.
Уровень Река St
В вашем ответе Zozotez так и должно быть Joyeux anniversaire à Zozotez.
бета-распад
2
@BetaDecay По словам моей (французской) жены, это должно быть без такой предлоги. Французская Википедия соглашается.
Сильвестр
14

Deadfish ( 2610 2391 символов)

Что это? Выход только вызов? Похоже, это работа для Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

К сожалению, поскольку Deadfish выводит только целые числа, приведенный выше код выводит представления ASCII каждого символа в песне.

Если мы используем спецификацию, которая

Ошибки не признаются: оболочка просто добавляет символ новой строки!

тогда мы можем сыграть в гольф до 2391 символа:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

Примечание: Deadfish на самом деле не мой любимый язык, но я не удержался: P. Также игра в гольф в Deadfish сама по себе является забавной головоломкой.

Sp3000
источник
19
Для определенных значений «веселья».
Чарльз Вуд
13

JS, 83 байта

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

или 79 байтов @Ingo Bürk

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

или 71 байт @kapep

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

или запустите на консоли эту страницу (42 байта)

eval($("#answer-39759 code:first").text())
l2aelba
источник
4
Кроме того, это короче: h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)(вы все еще можете использовать, promptчтобы сэкономить еще больше)
Ingo Bürk
11
LOL на последнем фрагменте кода ..: D
Оптимизатор
1
76:t='to you\n';console.log(h='Happy birthday',t+h,t+h,'dear JavaScript\n'+h,t)
NinjaBearMonkey
1
71:console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)
kapex
3
вместо alert.log требуется 2 скобки, но короче: alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)69
edc65
11

R: 70 байт

Использует преимущества pasteи вектор рециркуляции.

writeLines(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")))
bdzimmer
источник
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
germcd
@germcd Это не совсем работает, так как catдобавляет пробелы между строками. Таким образом, вы получаете пробел в начале каждой строки, кроме первой.
bdzimmer
write(x,"")-> write(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R")),"")68 байт. Вот мое оригинальное решение с p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")утилизацией 73 Vector снова побеждает меня.
Vlo
Уменьшено до 66 байт `~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"") tio.run/##K/r/…
Ник Кеннеди
11

T-SQL, 89 87 байт

Изменить: Вероятно, не следует углублять эти старые вещи, но я просто заметил очевидное изменение в этом, чтобы восстановить пару байтов.

Используя STUFF для удаления ненужных частей строки, начальный индекс обеспечивается значениями в FROMпредложении, умноженными на 3

SELECT STUFF('Happy Birthday to You  Dear SQL',N,8,'')FROM(VALUES(24),(24),(15),(24))S(N)
MickyT
источник
Этот хорош!
TLama
Это блестящее решение SQL и очень хороший трюк!
BradC
9

GNU dc, 51

[Happy Birthday to You]d[Happy Birthday Dear dc]rdf
Цифровая травма
источник
3
Я тоже пробовал dc, но даже почти сырая версия короче: [Happy Birthday To You]d[Happy Birthday Dear dc]rdf51 символ.
manatwork
Сегодня в рулоне @manatwork :)
Цифровая травма
3
Из-за этого поста я узнал о существовании dc сегодня, и это отлично.
Калеб Пол
9

Perl - 58

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

Бежать с:

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

Просто для удовольствия:

perl -E'for(<HappyBirthday{0,1,2,3}>){s/B/ B/;s/2/ Dear Perl\n/;print s/\d/ To You\n/r}'
hmatt1
источник
6
Как насчет say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024
@ core1024 Я не знал, что ты можешь сделать это с массивами, это круто. Не стесняйтесь отправлять как свой собственный ответ!
hmatt1
8

Python 507 байт

Распечатать """
H ap py- День рождения-до-у-у = Happy - День рождения
- к - уу = х аппи - в день рождения - д е
ar-Python = Ha ppy - Bir t hda y-to- Y o uHapp y -
B rthday - to - Y ou = H app
y - день рождения от-до -уу = H a ppy - B ир
"" ".replace (" \ n "," "). replace (" "," "). replace (" - "," ") .replace (" = "," \ n ") [: 92]

Не выигрывать призы ... но если вы внимательно посмотрите на это, есть немного искусства ASCII:

# # # ### ### # # ### ##### ### ##### # # ### # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # №
#### ##### ### ### # ### # ### # #### # # ##### # #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # ### ##### # # # # # ### # # # # #
Alex
источник
Это не серьезный соперник.
Esolanging Fruit
3
@ Challenger5 Да, «Тем не менее, я также награждаю другие остроумные материалы повышенным голосом (и я призываю всех сделать то же самое). Поэтому, хотя это соревнование по коду-гольфу, не очень короткие ответы также приветствуются «.
Алекс
7

PowerShell - 69 64 59

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

и 91

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

и 108

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

Руби, 56

x="Happy Birthday To You
"*4
x[59,6]="Dear Ruby"
puts x
britishtea
источник
Не можете ли вы встроить вещи?
Оптимизатор
2
Метод, заканчивающийся на =всегда, возвращает результат выражения после знака равенства. Если бы я добавил это, он бы только печатал "Dear Ruby"( String#[]=это метод).
Британцы
1
> Новые строки в строках. Хорошо, теперь я полностью убежден, что рубин - это просто магия вуду, и как крестьянин я должен вместо этого придерживаться питона.
sagiksp
6

Марбелоус , 151

Печатает Happy Birthdayкаждый раз, когда hbвызывается, с добавлением to youили Dear Marbelousдобавлением, в зависимости от того, является ли ввод 0или 1. Переданный мрамор hbне будет выведен, так как он застрянет в синхронизаторе &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

Ниже приведена доска hbс гексами, преобразованными в текст ascii: введите описание изображения здесь

es1024
источник
5

CJam, 46 байтов

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

Попробуй это здесь.

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

Это оставляет следующий массив в стеке:

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

Чье содержимое автоматически распечатывается в конце программы.

Альтернативно, с циклом for и тем же количеством символов:

4{"Happy Birthday "I2="Dear CJam""to You"?N}fI
Мартин Эндер
источник
5
Лжец !! Ваш любимый язык - Ruby / Mathematica: P
Оптимизатор
1
@Optimizer Конечно, не Ruby, может быть Mathematica, но я даже не уверен в этом. Для «настоящего» программирования я бы, наверное, всегда выбирал C / C ++ / C #. (Я также почти уверен, что у вас JS: P.)
Мартин Эндер,
5
Вы меня достали: P: D
Оптимизатор
5

Haskell: 75

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

Вывод кода в ideone

Haskell один лайнер: 79

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

Вы можете попробовать один лайнер онлайн здесь: http://tryhaskell.org/


источник
1
Один вкладыш, который сбривает одного персонажа:mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
Алекс Рейкин
список пониманий soooo loooonnnnggggg
Алекс
2
Кроме того, технически это должно putStrLnсоответствовать спецификации (вы получаете двойные кавычки print)
Алекс Рейкинг
2
Это _не нужно, потому что возвращаемое значение main отбрасывается - вы видите это только в GHCi
гордый 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'
Бета распад
источник
1
Qapla '! +1 за использование Var'aQ на всех языках!
WallyWest
5

GolfScript: 54 символа

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

Образец прогона:

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
источник
Я только заметил это. (Побочный эффект от попытки написать этот код GolfScript в течение 5 ~ 6 часов.) Спасибо, @ MartinBüttner.
manatwork
1
С Днем Рождения Уважаемый CodeGolf ?
Деннис
Grr. Я устал не только когда писал, но и когда исправлял. Спасибо @Dennis.
manatwork
5

T-SQL (MS-совместимый): 75

print stuff(replicate('Happy Birthday to You '+char(10),4),62,6,'Dear SQL')
Кайл Хейл
источник
Хороший ... жаль, что я не думал об этом :)
MickyT
Отличная идея! Сохраните еще 9 байтов, заменив их +char(10)на разрыв строки внутри кавычки, просто сделайте возвращаемую часть строки.
BradC
5

C # (75) (73)

Использование System.Diagnosticsс цельюDebug.Print

Обновить до кода @Abbas '

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

Обновить до @Tyress 'код (83) (76)

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

Выход:

Happy Birthday To You
Happy Birthday To You
Happy Birthday Dear C#
Happy Birthday To You
Мастер Мик
источник
2
Вы можете сохранить пару символов, используя String.Formatи троичный оператор. Вы также можете сделать это гораздо менее похожим на программу на C # и использовать ее i++<3; p
FryAmTheEggman