Співайте з днем ​​народження улюблену мову програмування


119

У вашої улюбленої мови програмування щойно був день народження. Будь ласкавим і заспівай пісню З днем ​​народження .

Звичайно, ви повинні досягти цього, написавши програму на цій мові. Програма не вводить даних і записує наступний текст у стандартний вихід або довільний файл:

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
Чому всі нагороди за це, незважаючи на всі відгуки на пісню Бонбон ? Це так само нудне завдання.
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?
vijrox

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
Я просто знав, що на це буде відповідь ЛОКОДА. BTW, kan u wryt n lwrcase insyd t kwotez? KTHXBYE.
Рівень річки Св.

2
Я спробував написати час відповіді LOLCODE на ще один виклик, але це занадто багатослівний код для гольфу в коді, і йому не вистачає гідних структур даних та можливості створення складних функцій, щоб досить обмежити мої зусилля!
я насторожив прибульця

3
Ця відповідь дала мені бажання завантажити LOCODE і насправді вивчити його належним чином.
Фарап

2
Це чудово!!
AStopher

89

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

Це друкує вірші та читає їх уголос.

happy birthday

З Днем Народження Вам
З Днем Народження,
З Днем Народження Шановний Математика
З Днем Народження Вам

StringReplaceзамінює кожну кому на NewLine. Штрихкоди не можуть містити контрольні символи.


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. Це, здається, є стандартним 8-кратним TI-Basic, де будь-який вираз автоматично зберігається в Ans, який може бути використаний дивною та важко дотримуваною стратегією оптимізації. Я також почав програмувати на цій приголомшливій мові.
кодовий прорив

4
Примітка до редакторів: чи можете ви розміщувати будь-які зміни (у цьому випадку втрату 8 символів) у коментарях, а не просто редагувати їх? Це би змусило мене відчувати, що це все ще моя відповідь.
Стретч-маніяк

2
+1 !! ось як я навчився програмувати теж. Я створив Tron для TI-83: ​​D, проте він був досить повільним, таким чином, не весело.
Нахт

2
Ха-ха, це приголомшливо. Я зробив гру в Блекджек для TI-83. У процесі я вивчив усі правила Блекджека досить інтимно.
thomasrutter

44

Сід, 60 55 байт

(1 символ додано, тому що немає можливості змусити sedпрацювати без введення даних.)

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

Безумовно, не переможець, розміщений для демонстрації sedрідкісної s///особливості заміни лише п ятого явища.

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

7
sedвідповіді завжди переможці IMO :)
Digital Trauma

Здається, що коротша відповідь - 51 байт, а не 52, які ви перерахували
Тейлор Скотт,

1
@TaylorScott, пояснення вгорі також застосовано: "(1 символ додано, тому що немає можливості змусити sedпрацювати без введення)."
манатура

Ах, це має сенс :)
Тейлор Скотт

30

C, 73 байти

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

Незначна помилка: має бути i++-3. (В даний час "Шановний c" з'являється у другому рядку.) (Користуючись однією змінною, я би назвав її "c".)
манатура

постійний фіксований, змінна змінна. Будь-яка ідея скоротити код?
VX

Вибачте, немає ідеї скорочувати це. С - це не моя сила. (Я знайшов помилку, тому що навіть ваш поточний бал настільки неймовірний для мене, що мені довелося його випробувати.;))
манатура

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
@George: Python 2.7, оскільки він не має дужок навколо printаргументу.
Фалько

1
Чи враховується вихід від інтерактивного перекладача? h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
кинув

1
Ви можете зберегти ще один, видаливши пробіл перед цим Dearі перейшовши 59на 60.
кинув

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!
Цифрова травма

2
Ви можете опустити двокрапку в розширенні параметра - це працює, якщо параметр ніколи не був встановлений, а :-також охоплює випадки, коли він встановлений, але порожній

@professorfish Приємно - спасибі, я цього не знав!
Цифрова травма

@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


@squeamishossifrage lol, виправлено.
Васі

16
Можливо, ти можеш додати Ахнольда коса! 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 байти

Я просто подумав: «Ей, ще немає відповіді на Рубі», але потім один з’явився за кілька секунд до цього. Ну добре...

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/


1
Поєднайте завдання до $ t з його першим результатом:$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
маніпуляція

@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 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, Ракетка, 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.

День народження Зозотеса - 19 липня 2011 року


4
+1 за "З днем ​​народження, дорогий розширений Brainfuck", мабуть, найсміливіша назва мови тут. І все ж програма є часткою від величини, еквівалентної батьківській мові. А для Zozotez, який справді краще звучить французькою мовою, хоча загалом мені не дуже подобається, як французи видавлюють ім’я людини в однаковий рядок цієї пісні.
Рівень річки Св.

У Вашій відповіді Зозотес так і має бути Joyeux anniversaire à Zozotez.
Бета-розпад

2
@BetaDecay На думку моєї (французької) дружини, це повинно бути без такого прийому. Французька Вікіпедія погоджується.
Сільвестер

14

Мертві рибки ( 2610 2391 символів)

Що це? Вихід лише виклик? Здається , це робота для Deadfish !

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio

На жаль, оскільки Deadfish видає лише цілі числа, наведений вище код видає ASCII уявлення кожного символу в пісні.

Якщо ми використовуємо специфікацію, що

Помилки не визнаються: оболонка просто додає символ нового рядка!

то ми можемо пограти в гольф до 2391 знаків:

iiisdsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiiofdddddddddddddddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiiiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioddddoiiioiioiiioiiiiiiiiiiodddddddddddofddddddddddddddddddddddddddddddddoiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiiiiiiiiooiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddsiioiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiioiiiiiiiiioiioddddddddddddoddddodddoiiiiiiiiiiiiiiiiiiiiiiiiodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddsdddddodddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddsiiiiiiiioiiiiiiiiiiiiiiiiiiiiiioiiiiiio 

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


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())

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)
капекс

3
попередження замість console.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")))

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 байт. Ось моє оригінальне рішення із 73 p=paste;write(c(i<-p(h<-"Happy Birthday","to You"),i,p(h,"Dear R"),i),"")переробки вектора знову мене б'є.
Вло

Зменшено до 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)

Цей приємний!
TLama

Це геніальне рішення SQL і дуже приємний трюк!
БредК

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 :)
Digital Trauma

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}'

6
Як щодо say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]?
core1024

@ core1024 Я не знав, що ти можеш це зробити з масивами, це приголомшливо. Сміливо публікуйте як власну відповідь!
hmatt1

8

Python 507 байт

друкувати "" "
H ap py- Bir th день -to-Y ou = Щасливий - B irt hday
- до - Y ou = H appy - B irthday - D e
ar-P ython = Ha ppy - Bir t hda y -to- Y o uHapp y -
З ір дн до - Y ou = H додаток
y - B irth день -to-Y ou = H a ppy - B ir
"" ".замінити (" \ n "," "). Замінити (" "," "). Замінити (" - "," ") .replace (" = "," \ n ") [: 92]

Не виграйте жодних призів ... але якщо ви уважно подивитесь на це, є мистецтво ASCII:

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

Це не серйозний претендент.
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

6

Рубі, 56

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

Хіба ви не можете впорядкувати речі?
Оптимізатор

2
Метод, що закінчується, =завжди повертає результат вираження після знака рівності. Якщо я накреслив це, він би друкував "Dear Ruby"( String#[]=це метод).
britishtea

1
> Нові рядки в рядках. Гаразд, зараз я повністю переконаний, що рубін - це просто вуду магія, і я, як селянин, повинен дотримуватися пітона.
sagiksp

6

Marbelous , 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: enter image description here


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
Optimizer

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)
Alex Reinking

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

Я щойно це помітив. (Невеликий побічний ефект від спроби написати цей код GolfScript протягом приблизно 5 ~ 6 годин.) Дякую @ MartinBüttner.
манатура

1
З днем ​​народження Шановний CodeGolf ?
Денніс

Grr Я втомився не лише тоді, коли писав це, але і коли виправляв. Дякую @Dennis.
манатура

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.