С днем рождения меня!
Напишите программу, которая печатает Happy birthday to me!
на свой день рождения.
- День рождения программы - это время создания, последней модификации или компиляции программы (вы выбираете), и он не должен быть жестко запрограммирован.
- Дата, которую вы используете в качестве дня рождения, никоим образом не должна зависеть от вызова или выполнения программы. Вы не можете изменить свой день рождения.
- Для дополнительного кредита (количество байт -15%) напечатайте
Happy birthday to you!
в свой день рождения (жестко запрограммированный), если он не совпадает с днем рождения программы. Или используйте день рождения какой-нибудь знаменитости и получите -14%. - Он должен печатать только это, и не печатать ничего в любой другой день.
- Подсчет байтов, в UTF-8.
- Используйте григорианский календарь.
Удачи и с днем рождения (для новорожденных программ).
PS
После комментария Изкаты, если вы печатаете Happy birthday to Mel
в день рождения Мела Кая , вы получаете скидку 20%. Но вы должны предоставить достоверный источник, что именно эта дата.
Ответы:
PHP
7775746560Большое спасибо превосходным предложениям Тима Сегейна :
Подлый PHP:
46424140Используя идею Фила Х и снова предложение Тима Сегина :
источник
''
вокругdm
строк. Он выдал предупреждение, но я считаю, что он отправляется со стандартной ошибкой, если включено сообщение об ошибке.<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
Баш (подлый): 36
По правилам: «Время создания, модификации или компиляции программы». Я выбираю время модификации, и вечную само-модификацию. [HT @ace для 1 символа]
Perl (также подлый): 29
Этот, возможно, менее подлый, чем первый; Программы на Perl всегда компилируются до того, как они выполняются, что не все знают - понимаете, в области подлости прослеживается образование. Итак, вот дата компиляции, которую я использую.
- Изменить для изменения правила -
Это было написано до того, как появилось какое-либо правило об изменении вашего дня рождения. Я думаю, что Perl еще стоит; все программы на Perl компилируются до их запуска. Я оставлю ответ здесь для образовательных целей!
источник
!
с\!
и удалить кавычки, чтобы сохранить 1 символБаш - 65
Благодаря ugoren , асе и nyuszika7h за помощь.
источник
!
с,\!
так что вам не нужны кавычки и сохранить 1 символ.!
в интерактивных оболочках, а не в скриптах.[
и]
вместо[[
и]]
.C # 198,05 (233 - 15%)
отформатирован:
191 (без бонуса)
181,05 (213 - 15%)
С некоторыми дополнительными инструкциями (вам нужно скомпилировать это
b.exe
и запустить из каталога, в котором находится исполняемый файл), я могу получить это:171 (без бонуса)
Те же инструкции, что и выше, на этот раз только печать сообщения в свой день рождения (так что без бонуса -15%).
источник
,b="1202"==t
после того, как получите строку даты, и использовать ее вместо этого.,b="1202"==t
но==t
часть невозможна, так как это приводит к bool, а другая переменная является строкой. Вы не можете (AFAIK то есть) использовать два разных типа в одной декларации "var".CreationTime.Date == DateTime.Today
.Java - 275 - 15% = 233,75 с бонусом / 237 без бонуса
С бонусом:
Без бонуса:
Я родился 23 апреля.
источник
\n
Я очень горжусь этой маленькой уловкой, чтобы сохранить несколько байтов в сообщении. Я надеюсь, что это будет включено в другие ответы. Я первый подумал об этом!
питон
105 символов, без дополнительного кредита. Сохраните файл как «с днем рождения меня» и запустите. Работает только по Гринвичу, и «день рождения» определяется как дата вашего рождения, а не как юбилей (также часто называют «день рождения»).
Чтобы это сработало, сохраните это как «с днем рождения меня» и запустите
python "happy birthday to me"
Примечание: конечно, в имени файла может присутствовать почти все, кроме небольшой начальной загрузки, что делает любой произвольно большой код сводящимся к начальной загрузке. Обычно я считаю это "изменой". Однако «с днем рождения меня» не является неразумным именем файла - оно описывает, что делает программа, намного лучше, чем некоторые программы (например, «python»), поэтому в этом случае я собираюсь разрешить это :)
источник
eval(sys.argv[0])
?However, "happy birthday to me" is not an unreasonable filename - it describes what the program does, much better than some programs (e.g. "python"), so in this case I'm going to allow it
Матлаб: 66
Имя файла должно быть 'fm'
источник
strncmp(x, y, 5)
сравнивает даты как28-12-2013
первые 15 символов (28-12
например, 28 декабря). Это также работает, когда пользовательские настройки языка,yyyy/mm/dd
например,? Matlab по умолчаниюdd-mm-yyyy
всегда? (Просто любопытно). Редактировать Nevermind: нашел это! , Кажется, это так. Это не имеет значения , в любом случае дляmm/dd/yyyy
или сdd-mm-yyyy
тех пор , как левый и правый операнд будет использовать тот же формат , в любом случае , и оба 5 самых левых символов будет соответствовать в любом случае; до тех пор, пока год не будет ведущим.t
? Неdir('f.m').date
работает?t
необходимо дляdir
возврата атрибутов файла (в противном случае он просто вернул бы все файлы в каталоге, которые совпадают'f.m'
). Кроме того,t
необходимо получить доступ кdate
полю.GNU COBOL с -free, 204
Я нарушаю правила о знаменитостях, поэтому никаких бонусов нет ...
Полученный текст вводится пользователем (запрашивается при запуске). Если это не так, то строку, определяющую,
C
необходимо удалить, как это делаетсяACCEPT C
иDISPLAY C
должно статьDISPLAY "HAPPY BIRTHDAY TO ME!"
для дополнительных семи символов.WHEN-COMPILED
это специальный регистр, содержащий дату / время компиляции, который доступен для программы (всегда удобно, вы можете знать, что у вас есть правильная версия). Это усечено в,MOVE
потому что остальное не нужно.DATE
текущая дата - это yymmdd./
определении A указан символ редактирования вставки, поскольку дата компиляции содержит косую черту. Дополнительный персонаж, но облегчает сравнение.Знаменитость = Грейс Хоппер
источник
Пакет - 37 байт
Кража метода, используемого одним из ответов Bash ..
Другой метод - 145 байт
источник
Ruby, 69 символов / байт
31536000
количество секунд в году и86400
количество секунд в дне.источник
JavaScript
Node.js, 156 байт
Использует время модификации файла.
источник
Powershell - 105 байт
Ungolfed:
Бонус не стоит, я могу получить только 117,5.
источник
Powershell - 127
Для бонуса 15% - 151 байт, минус 15% = 128,4
источник
write
команду - просто"happy birthday to me!"
распечатайте ее.Рубин -
8010387 байтРубин -
123115135121 - 15% =104,5597,75114,75 102,85баллаМожет быть немного длиннее или короче в зависимости от того, где ваш день рождения выпадает на год, и самый короткий способ представить это. Для меня это
36e5
(секунды с начала эпохи; зависит от часового пояса).Мел Гибсон считается? Вот 138 байт - бонус 35% = 89,7-балльная программа, которая празднует себя, меня и Мел!
источник
PureBasic
Без бонуса - 142
С бонусом - 218 - 15% = 185,3
источник
TI-BASIC, 68 байтов
Помните, что эти лексемы один байт:
If , Ans, →, Disp
.getDate
это два байта. Все остальные односимвольные символы - один байт.источник
J 79
Бонусная версия120 - 15% = 102
Получу ли я дополнительный кредит за то, что они также напечатали оба, когда у обоих день рождения?
Пояснение (справа налево):
Центральный глагол поезда
Левый зубец для центрального поезда:
источник
Ява - 196
Это отличается от других представлений Java с использованием строк, сокращая 41 символ в процессе. Он использует String.format ("% tj") для форматирования строки java.util.Date или строки года, а затем сравнивает эти две строки.
отформатирован:
источник
C # 191 без бонуса
отформатирован:
источник
var x="MMdd";
+ ToString (x
) + ToString (x
) = 15, тогда как ToString ("MMdd"
); + ToString ("MMdd"
); только стоит 12.WriteLine()
можно сократить доWrite()
. С учетом вышеизложенного и этого изменения у вас будет то же решение, что и у меня ;-)JavaScript (node.js) - 100 байт
источник
vb.net ~ 161c
Это напечатает сообщение о праздновании для всех, чей день рождения это.
Алан => Алан Кэй
Счет: 253c (минус -33c vb.net) = 220 - 15% (бонус на мой день рождения) = 187c - 14% (день рождения знаменитости) = 160,82 ~ 161c или 220c - 29% = 156,2 ~ 157c
источник
Powershell, 82 байта
где
это комбинации ярлыков и псевдонимов для выражения:
что эквивалентно канонической форме:
Powershell, 119 байт - 14% = 102,34 балла
На 3 января скрипт отобразится
Happy birthday to Prof!
. Если этот скрипт будет сохранен 3 января, будут отображены два приветствия.источник
C # - 63 байта
Я выбираю время компиляции . Поскольку код C # компилируется в MSIL, который во время выполнения компилируется в исполняемый код компилятором JIT , эта программа удовлетворяет условиям.
РЕДАКТИРОВАТЬ - Возможно, неверный ответ, как указано в комментариях.
источник