Wyzwanie
Biorąc pod uwagę, że Boże Narodzenie to:
- grudzień
- 12. miesiąc
- 25 dzień
Każdego roku określ dzisiejszą datę i określ, czy dzisiaj są Boże Narodzenie. Jeśli są święta, musisz wydrukować "It's Christmas"
. Jeśli to nie Boże Narodzenie, musisz jakoś poczekać do Bożego Narodzenia, a następnie wydrukować "It's Christmas"
.
Przykład
Z tego pytania o przepełnienie stosu
import time
while time.strftime("%b, %d", time.localtime()) != "Dec, 25":
time.sleep(60)
print "It's Christmas"
Python w 115 znakach
Zasady
Oto zasady:
- Załóżmy, że zegar komputera jest zawsze poprawny.
- Twój kod musi być możliwy do uruchomienia w dowolnym momencie.
- Twój kod musi zostać wydrukowany
"It's Christmas"
w Boże Narodzenie. - Pętla z pewnością nie jest konieczna, ale po uruchomieniu kod nie powinien kończyć się, dopóki nie zostanie wydrukowany.
- Najkrótszy kod wygrywa.
Odpowiedzi:
Perl + Unix, 40 znaków
Jest to to samo, co rozwiązanie Perla dla JB , z tym wyjątkiem, że zapisuję kilka znaków przy użyciu zewnętrznego
date
polecenia zamiast Perlalocaltime
.źródło
Bash, 39 lat
Dla tych, którzy nie mogą się doczekać:
Jest to zgodne ze wszystkimi zasadami, zwłaszcza pierwszą.
źródło
Unix, 39 bajtów
Dzięki pomocy Dennisa, dzięki za to.
źródło
echo{,} "It\'s Christmas"|at -t12252359
jest krótsze niż zaakceptowana odpowiedź. (Nawiasem mówiąc, wymagany jest odwrotny ukośnik).PowerShell, 45
46znakówZ pewnością nie jest bardzo energooszczędny, więc bateria do laptopa może umrzeć przed Bożym Narodzeniem (być może powód, by chcieć nowego). Ale nie spanie jest zdecydowanie krótsze .
Jest to również niezależne od ustawień regionalnych. I dzięki Jaykulowi za niezłą sztuczkę w dalszym zmniejszaniu tego.
Trochę narusza zasady, 45 znaków
Spowoduje to wydrukowanie pustych wierszy do Świąt Bożego Narodzenia, na których zostanie wydrukowane „Jest Boże Narodzenie”.
To ...
źródło
-match
i bez użycia symbolu wieloznacznego, aby nie zyskać / stracić znaków.Python (36 znaków)
W duchu nadużycia zasad:
Zdecydowanie drukuje „It's Christmas” na Boże Narodzenie
Jeśli to nie Boże Narodzenie, poświęć czas, drukując „Jest Boże Narodzenie”
źródło
while 1:print"It's Christmas"
.PostScript, 90
Nie uruchamiaj na drukarce, nie drukuje strony, a drukarka będzie wykonywać tylko do Bożego Narodzenia. Z drugiej strony odzyskanie drukarki byłoby miłym prezentem.
źródło
Mathematica, 47
źródło
Perl, 44
45Czy czas GMT nie byłby wystarczający? (3 znaki wyłączone ;-)
źródło
1until localtime=~/c 25/;
uratowałbym cię jednym char. :)-E
. Dzięki!localtime
niżej. Możesz ją ukraść, jeśli chcesz, ale czułem, że dodatkowa zależność uzasadniała osobną odpowiedź.)Perl, 45
Perl, 44
za pomocą operatora trójskładnikowego (Dzięki Ilmari Karonen).
źródło
? :
zamiast&& ;
zaoszczędzić ci też jednego char. (I użyłbymsay
zamiastdie
ładniejszego wyjścia.)say
zamiast umierania powoduje, że skrypt nigdy się nie kończy.JavaScript, 51 znaków
To zabójca procesora:
źródło
Chciałem to zrobić bez parsowania ciągów. Następnie w moim kodzie jest wiele magicznych liczb.
Dokonałem przybliżenia, aby uwzględnić lata przestępne. Nikt nie powiedział, że musi go wydrukować już 00:00:00, 25 grudnia!
Perl,
806957 znakówEdytowane, aby uzyskać bardziej zwięzłe zapętlenie!
źródło
R (47)
źródło
Python, 66
68źródło
1
na końcu drugiej linii wydaje mi się dość podejrzane. : P1
Zapewnia ciało dla pętli while. Zasadniczo jest to zajęte oczekiwanie do 25 grudnia. Ma podobny efekt jakwhile 1:if'c 25'in time.asctime():break
.time.ctime()
zrobiłbym.TI-BASIC,
4238Oczekuje, że format daty to RRRR / MM / DD.
getDate tworzy trzyelementową listę
{year,month,day}
; tylko w Boże Narodzenie miesiąc ^ 2 + dzień ^ 2 jest równy 769.Do ciągu używa się 23 bajtów, ponieważ małe litery to dwa bajty, z wyjątkiem i, który jest wyświetlany jako token urojonej jednostki.
źródło
Plik wsadowy, 68 znaków
Nie można używać interaktywnie, ponieważ zabija sesję. Rozwiązanie wymagałoby 5 dodatkowych znaków.
Również wrażliwy na ustawienia regionalne. Działa to w moich lokalizacjach, które używają formatu daty ISO 8601.
Ale hej, to plik wsadowy (przez większość nawet nie uważany za język programowania). I krótszy niż Javascript (i na równi z Pythonem).
źródło
Groovy, 55
Myślę, że to działa, ale wciąż czeka na wyjście.
źródło
.*
są one całkowicie niepotrzebne. (Ps. Możesz to przetestować, czekając na 5 grudnia zamiast 25)(pdf) eTeX - 180 znaków tylko 1-25 grudnia.
TeX ma tylko sposób na dostęp do daty uruchomienia programu, a czas, który upłynął od uruchomienia, jest ograniczony do 32768 sekund, więc muszę obliczyć liczbę sekund oczekiwania i dla każdej sekundy wykonać pętlę, która czeka na upłynął czas do osiągnięcia
1s
i zresetowania czasu. (Dokładnie, robię bloki po 900 sekund.)Praca na każdy miesiąc wymaga więcej pracy: 355 znaków.
źródło
MySQL, 180 znaków
Bo do czego w ogóle używasz silnika bazy danych?
Nie bardzo konkurencyjne pod względem długości, ale hej, to wykonalne!
źródło
DELIMITER /
,RETURNS TEXT
aCURDATE()LIKE'%12-25'
; i spróbuj usunąć trochę białych znaków.Ruby, 53
źródło
PHP, 40 bajtów
Pętla do 25 grudnia; następnie wyjdź do trybu zwykłego i wydrukuj.
Uruchom z ustawieniami domyślnymi (nie wyświetlaj powiadomień).
źródło
Kod maszynowy 8086, 33 bajty
źródło
JavaScript,
93897877 znakówfunction x(){Date().match("c 25")?alert("It's Christmas"):setTimeout(x,1)}x()
źródło
setInterval('/c 25/.test(Date())&&alert("It\'s Christmas")',9)
przy 61 znakach ... jedyną wadą jest to, że będziealert()
cały dzień w Boże Narodzenie.setInterval
1?setInveral
aby1000*60*60*24
i to zarówno nie uczyni proces cierpieć i powiadomi tylko raz na Boże Narodzenie.D, 130
źródło
t.month^12|t.day^25
(jeśli odpowiednio ustalę swoje priorytety)Q, 63 znaki
będzie działać na Boże Narodzenie każdego roku
źródło
SQL * Plus + PL / SQL - 100
SERVEROUTPUT ON
DBMS_OUTPUT.put
zamiast,DBMS_OUTPUT.put_line
ale to nic nie drukuje.źródło
C # (126)
Ładniejszy dla twojej baterii:
C # (163)
edytować
Druga wersja („ładniejsza dla twojej baterii”) ma trochę problem dec. 26 do grudnia 31. Właśnie pomyślałem o: P.
Obie wersje można prawdopodobnie nieco skrócić.
źródło
Japt , 27 bajtów (niekonkurencyjny)
Aby przetestować w stosunku do dzisiejszej daty: Zamień
c 25
na ostatnią literę tego miesiąca (skrót) + spację + dzień miesiąca.Feb 02
==b 02
Wypróbuj online! Nie konkuruje, ponieważ Japt jest znacznie nowszy niż to wyzwanie.
źródło
VBA, 58 bajtów
Anonimowy VBE natychmiast uruchamia funkcję okna, która nie pobiera danych wejściowych i działa aż do Bożego Narodzenia, kiedy to
It's Christmas
jest wysyłany do VBE, natychmiast zamyka okno.źródło
bash-n-date: 69 znaków:
Ale zawiedzie od 26 grudnia do 31 grudnia.
źródło
Q (60)
źródło