Herausforderung
Vorausgesetzt, Weihnachten ist:
- Dezember
- Monat 12
- Tag 25
Bestimmen Sie jedes Jahr das heutige Datum und ob heute Weihnachten ist oder nicht. Wenn es Weihnachten ist, müssen Sie drucken "It's Christmas"
. Wenn es nicht Weihnachten ist, müssen Sie irgendwie bis Weihnachten warten und dann drucken "It's Christmas"
.
Beispiel
Aus dieser Stapelüberlauffrage
import time
while time.strftime("%b, %d", time.localtime()) != "Dec, 25":
time.sleep(60)
print "It's Christmas"
Python in 115 Zeichen
Regeln
Hier sind die Regeln:
- Angenommen, die Uhr des Computers stimmt immer.
- Ihr Code muss jederzeit gestartet werden können.
- Ihr Code muss
"It's Christmas"
an Weihnachten gedruckt werden . - Ein Looping ist sicherlich nicht erforderlich, aber nach dem Start sollte der Code erst nach dem Drucken angehalten werden.
- Kürzester Code gewinnt.
Antworten:
Perl + Unix, 40 Zeichen
Dies ist die gleiche wie die Perl-Lösung von JB , außer dass ich ein paar Zeichen speichere, indem ich den externen
date
Befehl anstelle von Perls verwendelocaltime
.quelle
Bash, 39
Für diejenigen, die einfach nicht warten können:
Dies folgt allen Regeln, insbesondere der ersten.
quelle
Unix, 39 Bytes
Mit Hilfe von Dennis, danke dafür.
quelle
echo{,} "It\'s Christmas"|at -t12252359
ist dies kürzer als die akzeptierte Antwort. (Der Backslash ist übrigens erforderlich.)PowerShell, 45
46ZeichenEs ist sicherlich nicht sehr stromsparend, so dass ein Laptop-Akku möglicherweise vor Weihnachten leer wird (vielleicht ein Grund, sich einen neuen zu wünschen). Aber nicht schlafen ist definitiv kürzer .
Dies ist auch lokal-agnostisch. Und danke an Jaykul für einen netten Trick, um dies weiter zu reduzieren.
Missbrauch der Regeln ein bisschen, 45 Zeichen
Dadurch werden leere Zeilen gedruckt, bis Weihnachten ist. Daraufhin wird "Es ist Weihnachten" gedruckt.
Es ist ...
quelle
-match
den Platzhalter verwenden und darauf verzichten, um keinen Gewinn / Verlust an Zeichen zu verursachen.Python (36 Zeichen)
Im Geiste des Missbrauchs der Regeln:
Auf jeden Fall druckt "It's Christmas" an Weihnachten
Wenn es nicht Weihnachten ist, vertreiben Sie die Zeit, indem Sie "Es ist Weihnachten" drucken.
quelle
while 1:print"It's Christmas"
.PostScript, 90
Laufen Sie nicht auf einem Drucker, es druckt keine Seite und es wird nur Ihren Drucker bis Weihnachten tun. Andererseits wäre es ein schönes Geschenk, wenn Sie Ihren Drucker zurückbekämen.
quelle
Mathematica, 47
quelle
Perl, 44
45Wäre GMT nicht ausreichend? (3 Zeichen weg ;-)
quelle
1until localtime=~/c 25/;
würde dir einen char sparen. :)-E
hatte. Vielen Dank!localtime
unten. Sie können sie jederzeit stehlen, aber ich hatte das Gefühl, dass die zusätzliche Abhängigkeit eine separate Antwort rechtfertigt.)Perl, 45
Perl, 44
mit ternären Operator (Dank an Ilmari Karonen).
quelle
? :
anstatt&& ;
dir einen char zu sparen. (Und ich würdesay
stattdie
für eine schönere Ausgabe verwenden.)say
anstelle von sterben verwenden, wird das Skript nie beendet.Javascript, 51 Zeichen
Es ist ein CPU-Killer:
quelle
Ich wollte dies tun, ohne Zeichenfolgen zu analysieren. Anschließend enthält mein Code viele magische Zahlen.
Ich habe eine Annäherung vorgenommen, um die Schaltjahre zu berücksichtigen. Niemand sagte, es müsse gleich am 25. Dezember um 00:00:00 Uhr ausgedruckt werden!
Perl,
806957 ZeichenBearbeitet für präziseres Looping!
quelle
R (47)
quelle
Python, 66
68quelle
1
am Ende der zweiten Zeile sieht für mich ziemlich verdächtig aus. : P1
stellt einen Body für die while-Schleife bereit. Bis zum 25. Dezember ist im Grunde genommen viel zu tun. Dies hat den gleichen Effekt wiewhile 1:if'c 25'in time.asctime():break
.time.ctime()
würde tun.TI-BASIC,
4238Erwartet das Datumsformat JJJJ / MM / TT.
getDate erstellt eine Liste mit drei Elementen
{year,month,day}
. Nur an Weihnachten ist Monat ^ 2 + Tag ^ 2 gleich 769.Für die Zeichenfolge werden 23 Byte verwendet, da Kleinbuchstaben jeweils zwei Byte umfassen, mit Ausnahme von i, das als imaginäres Einheitentoken angezeigt wird.
quelle
Batch-Datei, 68 Zeichen
Nicht interaktiv verwendbar, da die Sitzung beendet wird. Für das Lösen wären 5 weitere Zeichen erforderlich.
Auch Gebietsschemasensitiv. Dies funktioniert in meinem Gebietsschema, das das Datumsformat ISO 8601 verwendet.
Aber hey, es ist eine Batch-Datei (von den meisten nicht einmal als Programmiersprache angesehen). Und kürzer als Javascript (und auf Augenhöhe mit Python).
quelle
Groovy, 55 Jahre alt
Ich denke, es funktioniert, aber ich warte immer noch auf die Ausgabe.
quelle
.*
sind diese völlig unnötig. (Ps. Sie können es testen, indem Sie auf den 5. statt auf den 25. Dezember warten.)(pdf) eTeX - 180 Zeichen nur vom 1. bis 25. Dezember.
TeX hat nur eine Möglichkeit, auf das Datum, an dem das Programm startet, und die seit dem Start verstrichene Zeit von 32768 Sekunden zuzugreifen. Ich muss also die Anzahl der Sekunden berechnen, die gewartet werden soll, und für jede Sekunde eine Schleife ausführen, die auf das Programm wartet verstrichene Zeit, um die Zeit zu erreichen
1s
und zurückzusetzen. (Genau, ich mache Blöcke von 900 Sekunden.)Für jeden Monat zu arbeiten erfordert mehr Arbeit: 355 Zeichen.
quelle
MySQL, 180 Zeichen
Wofür verwenden Sie Ihre Datenbank-Engine überhaupt?
In Längsrichtung nicht sehr wettbewerbsfähig, aber hey, es ist machbar!
quelle
DELIMITER /
,RETURNS TEXT
undCURDATE()LIKE'%12-25'
; und versuchen, etwas Leerzeichen zu entfernen.Rubin, 53
quelle
PHP, 40 Bytes
Schleife bis zum 25. Dezember; Beenden Sie dann den normalen Modus und drucken Sie.
Mit Standardeinstellungen ausführen (keine Hinweise anzeigen).
quelle
8086 Maschinencode, 33 Bytes
quelle
Javascript,
93897877 Zeichenfunction x(){Date().match("c 25")?alert("It's Christmas"):setTimeout(x,1)}x()
quelle
setInterval('/c 25/.test(Date())&&alert("It\'s Christmas")',9)
bei 61 Zeichen ... der einzige Nachteil ist, dass esalert()
an Weihnachten den ganzen Tag ist.setInterval
zu 1?setInveral
to1000*60*60*24
und beides wird den Prozess nicht in Mitleidenschaft ziehen und nur einmal an Weihnachten benachrichtigen.D 130
quelle
t.month^12|t.day^25
ich (wenn ich meine Prioritäten richtig einstelle)Q, 63 Zeichen
wird an jedem Weihnachtstag arbeiten
quelle
SQL * Plus + PL / SQL - 100
SERVEROUTPUT ON
DBMS_OUTPUT.put
anstatt,DBMS_OUTPUT.put_line
aber das druckt nichts.quelle
C # (126)
Schöner für Ihren Akku:
C # (163)
bearbeiten
Die zweite ("schöner für Ihre Batterie") Version hat ein bisschen ein Problem Dezember. 26. bis Dezember 31. Ich dachte nur an: P
Beide Versionen können wahrscheinlich noch etwas gekürzt werden.
quelle
Japt , 27 Bytes (nicht konkurrierend)
So testen Sie das aktuelle Datum: Ersetzen Sie es
c 25
durch den letzten Buchstaben des Monats (Kurzform) + Leerzeichen + Tag des Monats.Feb 02
==b 02
Probieren Sie es online! Nicht konkurrierend, weil Japt viel neuer ist als diese Herausforderung.
quelle
VBA, 58 Bytes
Die anonyme VBE-Direktfensterfunktion nimmt keine Eingabe entgegen und wird bis Weihnachten ausgeführt. Zu diesem Zeitpunkt wird sie
It's Christmas
im VBE-Direktfenster ausgegeben.quelle
Bash-n-Date: 69 Zeichen:
Aber es wird am 26. Dezember bis 31. Dezember scheitern.
quelle
Q (60)
quelle