Вызов
Учитывая, что Рождество это:
- Декабрь
- Месяц 12
- 25 день
Каждый год определяйте сегодняшнюю дату, и будет ли сегодня Рождество. Если это Рождество, вы должны напечатать "It's Christmas"
. Если это не Рождество, вы должны как-то подождать до Рождества, а затем распечатать "It's Christmas"
.
пример
Из этого вопроса о переполнении стека
import time
while time.strftime("%b, %d", time.localtime()) != "Dec, 25":
time.sleep(60)
print "It's Christmas"
Питон в 115 символов
правила
Вот правила:
- Предположим, что часы компьютера всегда правильные.
- Ваш код должен быть запущен в любое время.
- Ваш код должен напечатать
"It's Christmas"
на Рождество. - Циклы, конечно, не нужны, но после запуска ваш код не должен останавливаться, пока не будет напечатан.
- Самый короткий код выигрывает.
Ответы:
Perl + Unix, 40 символов
Это то же самое, что и решение Perl от JB , за исключением того, что я сохраняю несколько символов, используя внешнюю
date
команду вместо Perllocaltime
.источник
Баш, 39
Для тех, кто просто не может ждать:
Это следует всем правилам, особенно первому.
источник
Unix, 39 байт
С помощью Денниса, спасибо за это.
источник
echo{,} "It\'s Christmas"|at -t12252359
, это короче принятого ответа. (Кстати, обратный слеш требуется.)PowerShell, 45
46символовЭто, конечно, не очень энергоэффективно, поэтому батарея ноутбука может погибнуть до Рождества (возможно, повод пожелать нового). Но не спать определенно короче .
Это также не зависит от региона. И спасибо Jaykul за хороший трюк в сокращении этого в дальнейшем.
Немного нарушая правила, 45 символов
Это будет печатать пустые строки до Рождества, на котором будет напечатано «Это Рождество».
Это ...
источник
-match
и обходиться без подстановочного знака, чтобы не получать прибыль / убыток в символах.Питон (36 символов)
В духе злоупотребления правилами:
Определенно печатает "Это Рождество" на Рождество
Если это не Рождество, проведите время, напечатав «Это Рождество»
источник
while 1:print"It's Christmas"
.PostScript, 90
Don't run on a printer, it doesn't print a page, and it will only DoS your printer until Christmas day. Then again, getting your printer back would be a nice present.
источник
Mathematica, 47
источник
Perl, 44
45Wouldn't GMT time be sufficient? (3 characters off ;-)
источник
1until localtime=~/c 25/;
would save you one char. :)-E
at the time. Thanks!localtime
below. Feel free to steal it if you like, but I felt the extra dependency justified a separate answer.)Perl, 45
Perl, 44
using ternary operator (Thanks to Ilmari Karonen).
источник
? :
instead of&& ;
would save you one char too. (And I'd usesay
instead ofdie
for prettier output.)say
instead of die, the script never finish.Javascript, 51 chars
It's a CPU killer:
источник
I wanted to do this without parsing strings. Subsequently, there's a lot of magic numbers in my code.
I did some approximation to account for leap years. No one said that it had to print it out right on 00:00:00, Dec. 25!
Perl,
806957 charactersEdited for more concise looping!
источник
R (47)
источник
Python, 66
68источник
1
at the end of the second line looks quite suspicious to me. :P1
provides a body for the while-loop. It's basically a busy wait until December 25. It has the similar effect towhile 1:if'c 25'in time.asctime():break
.time.ctime()
would do.TI-BASIC,
4238Expects the date format to be YYYY/MM/DD.
getDate creates a three-element list
{year,month,day}
; only on Christmas is month^2 + day^2 equal to 769.23 bytes are used for the string because lowercase letters are two bytes each, except for i which is displayed as the imaginary unit token.
источник
Batch file, 68 chars
Not usable interactively, as it kills the session. Solving that would require 5 more characters.
Also locale-sensitive. This works on my locale which uses ISO 8601 date format.
But hey, it's a batch file (by most not even regarded as a programming language). And shorter than Javascript (and on par with Python).
источник
Groovy, 55
Think it works, but still waiting for output.
источник
.*
are entirely unnecessary. (Ps. You can test it by waiting for Dec 5 instead of 25.)(pdf)eTeX - 180 chars only December 1-25.
TeX only has a way to access the date when the program starts, and the time elapsed since the start, capped at 32768 seconds, so I need to compute the number of seconds to wait, and for each second do a loop which waits for the elapsed time to reach
1s
and reset the time. (Precisely, I'm doing blocks of 900 seconds.)Working for any month requires more work: 355 chars.
источник
MySQL, 180 chars
Because what are you using your database engine for, anyway?
Not very competitive lengthwise, but hey, it's doable!
источник
DELIMITER /
,RETURNS TEXT
andCURDATE()LIKE'%12-25'
; and try to remove some whitespace.Ruby, 53
источник
PHP, 40 bytes
Loop until 25th of December; then exit to plain mode and print.
Run with default settings (don´t display notices).
источник
8086 machine code, 33 bytes
источник
Javascript,
93897877 charsfunction x(){Date().match("c 25")?alert("It's Christmas"):setTimeout(x,1)}x()
источник
setInterval('/c 25/.test(Date())&&alert("It\'s Christmas")',9)
at 61 chars ... the only drawback is that it willalert()
all day on Christmas.setInterval
to 1?setInveral
to1000*60*60*24
and it both won't make the process suffer and will notify only once on christmas.D, 130
источник
t.month^12|t.day^25
(if I get my priorities right)Q, 63 chars
will work for christmas day on every year
источник
SQL*Plus + PL/SQL - 100
SERVEROUTPUT ON
DBMS_OUTPUT.put
instead ofDBMS_OUTPUT.put_line
but that doesn't print anything.источник
C# (126)
Nicer for your battery:
C# (163)
edit
The second ("nicer for your battery") version does have a bit of an issue dec. 26th to dec. 31st I just thought of :P
Both versions can probably be shortened a bit more.
источник
Japt, 27 bytes (non-competing)
To test against today's date : Replace
c 25
with this month's last letter (shorthand) + space + day of the month.Feb 02
==b 02
Try it online! Non-competing because Japt is far newer than this challenge.
источник
VBA, 58 Bytes
Anonymous VBE immediates window function that takes no input and runs until it's Christmas day, at which time it outputs
It's Christmas
to the VBE immediates window.источник
bash-n-date: 69 chars:
But it will fail on Dec. 26th to Dec. 31th.
источник
Q (60)
источник