У вашего любимого языка программирования только что был день рождения. Будь милым и пой песню Happy Birthday .
Конечно, вы должны сделать это, написав программу на этом языке. Программа не принимает никаких данных и записывает следующий текст в стандартный вывод или произвольный файл:
Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear [your favourite programming language]
Happy Birthday to You
Вы должны заменить часть в скобках (и опустить скобки).
Это код гольфа - выигрывает самый короткий код.
ОБНОВИТЬ
Я рад, что этот вопрос вызвал большой интерес. Позвольте мне добавить дополнительную информацию о выигрыше. Как было заявлено изначально, этот вопрос относится к коду гольфа, поэтому самый короткий код выиграет. Победитель будет выбран в конце этой недели (19 октября).
Тем не менее, я также награждаю другие остроумные представления повышающими голосами (и я призываю всех сделать то же самое). Поэтому, хотя это соревнование по коду-гольфу, не очень короткие ответы также приветствуются.
Результаты
Поздравляет оптимизатор , победитель этого конкурса с его 42 байтами длинным, CJam представления .
источник
Ответы:
CJam,
4642 байтаКак это устроено:
Это оставляет стек следующим образом в конце кода:
которые печатаются автоматически для вывода в виде
Попробуйте здесь (скопируйте код и запустите)
источник
ЛОКОЛОД: 109 (105 с «правильным» написанием)
LOLCODE не очень хороший язык для игры в гольф, тем более что вы теряете всю красоту и выразительность при сокращении кода.
Проверьте это с помощью loljs
Это мое предпочтительное исполнение весом 187 символов (для ясности добавлены пробелы):
источник
Mathematica - пожелания дня рождения со штрих-кодом - слишком много байтов
Это печатает стихи и читает их вслух.
StringReplace
заменяет каждую запятую на NewLine. Штрих-коды не могут содержать управляющие символы.источник
10
в штрих-коде (нижний правый угол) есть знак , которыйBarcodeRecognize
был введен в Mathematica 10. ^^TI-Basic, 53 байта
Ну, так как все выкладывают свой любимый язык программирования, я мог бы также добавить один из моих старых любимых. За эти годы я потратил много времени (до того, как перешел на настоящие языки программирования), набирая команды в окне, вдвое меньше смартфона.
Мой калькулятор не поддерживает строчные буквы, и единственными переменными, которые могут быть строками, являются Str1, Str2 и т. Д.
источник
Sed,
6055 байт(1 символ добавлен, потому что нет способа заставить
sed
работать без ввода.)Конечно, не победитель, размещенный, чтобы продемонстрировать
sed
редкуюs///
особенность замены только n- го случая.Сед (короче, но не интересно): 52 символа
Образец прогона:
источник
sed
ответы всегда победители IMO :)sed
работать без ввода.)».C 73 байта
источник
i++-3
. (В настоящее время «Dear c» появляется во 2-й строке.) (Используя одну переменную, я бы назвал ее «c».)Питон,
616059источник
H="\nHappy Birthday to You"
иprint(H*3)[:59]+" Dear Python"+H
print
аргумента.h="\nHappy Birthday to You";(h*3)[:60]+"Dear Python"+h
Dear
и изменив59
на60
.ш, 52
источник
H()(echo Happy Birthday ${@:-to You});H;H;H Dear sh;H
.:-
ArnoldC , 228 байт
Давайте заставим Арнольда Шварценеггера петь ...
выход:
источник
Invalid input '\', expected '"' (line 2, pos 40)
Hahpy Birfday
уменьшает количество персонажей на 4.APL (48)
источник
↑'Happy birthday '∘,¨⌽4⍴3⍴'to you' 'dear APL'
Язык программирования Шекспира , 3429 байт
Мои собственные слова, некоторое время назад. И все же, кто-то был достаточно сумасшедшим, чтобы сделать это. Да, да, я знаю. Слишком много байтов. Но SPL заслуживает включения сюда, я думаю. И поверьте мне, я приложил огромные усилия, чтобы «сыграть в гольф» эту программу, поэтому она несколько повторяется и использует в основном одни и те же слова (я всегда мог последовать совету DLosc , но это было бы слишком экстремально даже для меня) ,
Смысл всего этого?
Хорошо, если вам интересно, как все это должно работать, позвольте мне попытаться объяснить мои рассуждения. Во-первых, переменные. Они должны происходить из шекспировских пьес, и, поскольку важен счет тарактеров, мы должны выбирать маленькие; Таким образом
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.Рубин, 54 байта
Я просто подумал: «Привет, пока нет ответа Ruby», но потом один появился за несколько секунд до этого. Ну что ж...
источник
Любая любовь к PHP?
615958 байтПосмотрите это в действии @ http://sandbox.onlinephpfunctions.com/
источник
$s="\nHappy Birthday";echo$t="$s to You","$t$s Dear PHP$t";
<?=$t=($s="\nHappy Birthday")." to You","$t$s Dear PHP$t"?>
\n
фактический разрыв строки, чтобы сохранить символ.Я просто не могу выбрать только один язык: /
BrainBack: 68
BrainBack - это смесь BrainFuck и Forth, созданная для участия в PCG Mar 7, 2014
Расширенный BrainFuck : 79
День рождения EBF - 16 июля 2010
Схема: 96
(R5RS, Racket, R6RS REPL)
Схема родилась в декабре 1975 г. (NB: PDF)
Зозотез : 96
Тем не менее, это более правильно делать это по-французски (86):
Выход:
Zozotez 'день рождения 19 июля 2011
источник
Joyeux anniversaire à Zozotez
.Deadfish (
26102391 символов)Что это? Выход только вызов? Похоже, это работа для Deadfish !
К сожалению, поскольку Deadfish выводит только целые числа, приведенный выше код выводит представления ASCII каждого символа в песне.
Если мы используем спецификацию, которая
тогда мы можем сыграть в гольф до 2391 символа:
Примечание: Deadfish на самом деле не мой любимый язык, но я не удержался: P. Также игра в гольф в Deadfish сама по себе является забавной головоломкой.
источник
JS, 83 байта
или 79 байтов @Ingo Bürk
или 71 байт @kapep
или запустите на консоли эту страницу (42 байта)
источник
h='Happy Birthday ',t='to You\n';console.log(h+t,h+t,h+'Dear Javascript\n',h+t)
(вы все еще можете использовать,prompt
чтобы сэкономить еще больше)t='to you\n';console.log(h='Happy birthday',t+h,t+h,'dear JavaScript\n'+h,t)
console.log(a=(b="Happy Birthday ")+"to You\n",a,b+"Dear Javascript\n",a)
alert((t=(h="Happy Birthday ")+'to You\n')+t+h+'dear EcmaScript\n'+t)
69R: 70 байт
Использует преимущества
paste
и вектор рециркуляции.источник
cat(paste(rep("Happy Birthday",4),c(rep("to You",2),"Dear R"),'\n'))
cat
добавляет пробелы между строками. Таким образом, вы получаете пробел в начале каждой строки, кроме первой.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 снова побеждает меня.`~`=rep;write(paste("Happy Birthday"~4,c("to You"~2,"Dear R")),"")
tio.run/##K/r/…T-SQL,
8987 байтИзменить: Вероятно, не следует углублять эти старые вещи, но я просто заметил очевидное изменение в этом, чтобы восстановить пару байтов.
Используя STUFF для удаления ненужных частей строки, начальный индекс обеспечивается значениями в
FROM
предложении, умноженными на 3источник
GNU dc, 51
источник
dc
, но даже почти сырая версия короче:[Happy Birthday To You]d[Happy Birthday Dear dc]rdf
51 символ.Perl - 58
Бежать с:
Просто для удовольствия:
источник
say"Happy Birthday $_"for("to You","Dear Perl")[0,0,1,0]
?Python 507 байт
Не выигрывать призы ... но если вы внимательно посмотрите на это, есть немного искусства ASCII:
источник
PowerShell -
696459и 91
и 108
источник
Руби, 56
источник
=
всегда, возвращает результат выражения после знака равенства. Если бы я добавил это, он бы только печатал"Dear Ruby"
(String#[]=
это метод).Марбелоус , 151
Печатает
Happy Birthday
каждый раз, когдаhb
вызывается, с добавлениемto you
илиDear Marbelous
добавлением, в зависимости от того, является ли ввод0
или1
. Переданный мраморhb
не будет выведен, так как он застрянет в синхронизаторе&0
.Ниже приведена доска
hb
с гексами, преобразованными в текст ascii:источник
CJam, 46 байтов
Попробуй это здесь.
Это оставляет следующий массив в стеке:
Чье содержимое автоматически распечатывается в конце программы.
Альтернативно, с циклом for и тем же количеством символов:
источник
Haskell: 75
Вывод кода в ideone
Haskell один лайнер: 79
Вы можете попробовать один лайнер онлайн здесь: http://tryhaskell.org/
источник
mapM_(print.("Happy Birthday "++))["to You","to You","dear Haskell","to You"]
putStrLn
соответствовать спецификации (вы получаете двойные кавычкиprint
)_
не нужно, потому что возвращаемое значение main отбрасывается - вы видите это только в GHCiVar'aQ - 121
источник
GolfScript: 54 символа
Образец прогона:
источник
T-SQL (MS-совместимый): 75
источник
+char(10)
на разрыв строки внутри кавычки, просто сделайте возвращаемую часть строки.C #
(75)(73)Использование
System.Diagnostics
с цельюDebug.Print
Обновить до кода @Abbas '
Обновить до @Tyress 'код
(83)(76)Выход:
источник
String.Format
и троичный оператор. Вы также можете сделать это гораздо менее похожим на программу на C # и использовать ееi++<3
; p