Generieren Sie nach Erhalt von Monat und Jahr im Format JJJJMM die Ausgabe des entsprechenden Kalendermonats für dieses Jahr.
Beispielsweise sollte die Eingabe 201312
die folgende Ausgabe erzeugen:
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Der einzige Trick ist, KEINE nativen Funktionen zum Generieren von Kalendern ... also Linux-Klone, keine "cal" -Funktion ... Muahahahahah!
PS: Der Kalender muss mit Montag als ganz links stehendem Tag beginnen. Dies soll sicherstellen, dass die Ausgabe der Funktion "cal" entspricht, nicht jedoch mit "cal", bei der Sonntag ganz links steht. ..
Die kleinste Codegröße gewinnt.
Antworten:
Python 2.7 - 152
Leider scheitert es für September 1752 . Zugegeben, importiert sie alle die Kalender - Funktionen, aber nur verwendet 1, und das gibt nur den Starttag der Woche und die Anzahl der Tage.
Relativ Standardcode, aber das ist mein Lieblingsbit:
Die neue Zeile wird mithilfe der Zeichenfolgenmultiplikation gedruckt, wenn die Nummer des aktuellen Tages und des Starttages der Woche Sonntag (z. B. 7) ist, da der Boolesche Wert in eine Ganzzahl umgewandelt wird.
Dadurch wird ein Zeichen intuitiver gespeichert,
x%7==0
indemx%7<1
stattdessen verwendet wird.Testausgabe:
quelle
52.times
macht das? Es ist keine Multiplikation?n.times{...}
ist identisch mit(0...n).each{...}
oder0.upto(n-1){...}
. Multiplikation wäre52 * ...
Rubin,
170168 ZeichenBugfix: Die erforderliche Bibliothek (+16) benötigte nicht julian date modulo 7 anstelle des aktuellen Wochentags direkt (-3)
verwendet / 100 und% 100, um das Datum anstelle von Regex (-13) zu analysieren. Entnommen aus der Antwort von LegoStormtroopr.
entfernte die Klammern um das Argument zu
rjust
undDate.new
(-2)quelle
"#{l[i].to_s.rjust 2} #{?\n if i%7>5}"
mit"%2s %s"%[l[i],i%7>5?$/:""]
.Mathematica 203
Testen
quelle
SmileBASIC, 204 Bytes
Wow, dieser Schaltjahrdetektor ist SEHR lang ...
quelle
JavaScript (239)
Ausgabe:
quelle
PHP,
153147 BytesNervenzusammenbruch
quelle
C (gcc) , 242 Bytes
Ich vermute, nicht die eleganteste Lösung.
Eingabe in Form einer Ganzzahl, wobei die vier hohen Ziffern das Jahr und die niedrigen zwei Ziffern den Monat bilden.
Probieren Sie es online aus!
quelle
(13*m+4)/5+y%X*5/4-7*y/X/4
statt1+(26*m-2)/10-2*y/X+5*(y%X)/4+y/X/4