Jemand gab meiner Frau einen dekorativen Kalender, bestehend aus vier Würfeln. Hier ist das heutige Datum (ab dem Absenden dieser Challenge) auf der Vorderseite zu sehen:
Als ich es zum ersten Mal sah, schaute ich es aus dem falschen Winkel (von oben) an und konnte nicht herausfinden, warum es diese Informationen gab:
[["February", "January"], [3], [7], ["Monday", "Tuesday"]]
Ihre Aufgabe ist es, meinen Fehler für jedes Datum im Jahr 2019 zu wiederholen.
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die ein Datum aus dem Jahr 2019 annimmt und das ausgibt, was oben auf allen Würfeln erscheint, wenn dieses Datum mit der Vorderseite nach außen im Kalender angezeigt wird.
Hier sind alle sechs Seiten für alle Würfel. Zum Anzeigen eines 6
drehen Sie einfach den 9
Kopf. Das 0
ist vertikal symmetrisch, also 0
steht es immer noch auf dem Kopf 0
. Für einige Daten kann es mehr als eine richtige Antwort geben (z. B. gibt es für jeden 11. eines Monats mehrere Möglichkeiten, die Würfel und das 0
Objekt zu verwenden), sodass Sie jede richtige Antwort ausgeben können.
Regeln
- Standardlücken verboten.
- Das Eingabe- / Ausgabeformat ist flexibel.
- Die Ausgabe muss nach Würfeln geordnet sein, aber nicht innerhalb eines Würfels. Die Reihenfolge muss zuerst der Monatswürfel sein, dann die beiden Zahlenwürfel, gefolgt vom Wochentagswürfel. Wenn ein Würfel zwei Elemente oben hat, können diese beiden Elemente in beliebiger Reihenfolge sein.
- Sie können ersetzen
January
zuDecember
0-11 oder 1-12 wenn Sie möchten. - Sie können die Wochentage durch 0-6 oder 1-7 ersetzen, wenn Sie möchten, und Sie können die Woche entweder mit
Sunday
oder beginnenMonday
(aber Sie können die Woche nicht an einem anderen Tag beginnen - dies ist PPGC, keine Sorte der verrückten Stadt.) - Das ist Code-Colf . Es gewinnen die wenigsten Bytes für jede Sprache.
- Erläuterungen ermutigt.
Testfälle
(Tue) 2019-01-29 [[ "July", "August" ], [3], [7], [ "Thursday", "Wednesday" ]]
[[ "August", "July" ], [3], [7], [ "Wednesday", "Thursday" ]]
etc. since the order within each cube doesn't matter.
(Thu) 2019-07-11 [[ "May", "June" ], [3], [8], [ "Saturday", "Friday" ]]
[[ "May", "June" ], [8], [3], [ "Saturday", "Friday" ]]
since the two 1 cubes could be either way.
(Sun) 2019-10-27 [[ "January", "February" ], [3], [6], [ "Friday", "Saturday" ]]
(Wed) 2019-05-01 [[ "March", "April" ], [8], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [6], [3], [ "Monday", "Tuesday" ]]
[[ "March", "April" ], [9], [3], [ "Monday", "Tuesday" ]]
since the 0 cube could have either the 8 side or the 6 side facing up, and the 6 could also be considered a 9.
(Sat) 2019-08-24 [[ "February", "January" ], [8], [5], [ "Sunday" ]]
27
in2019-10-27
gehen36
, nicht32
.Antworten:
C (glibc) ,
327319286 Bytes(Einige Zeilenumbrüche zur Verdeutlichung hinzugefügt)
f
dauert einen Monat (1–12) und einen Tag (1–31). Druckt nach Standard. Probieren Sie es online!Testfälle:
Ungolfed
Ziffernwürfel
Dies sind die Möglichkeiten für die Ziffern:
Die folgende Zuordnung scheint die beste Wahl für das Golfen zu sein:
Betrügt
strftime
soll mit astruct tm
als Eingabe aufgerufen werden. Stattdessen erkläreint S[9]
und benutze ichS[4]
alstm_mon
undS[6]
alstm_wday
. Dies funktioniert, wenn die C-Bibliothek dieselbe Liste von Strukturelementen wie der ISO-Standard verwendet.s[99]
wird verwendet, um verschiedene Zeichenfolgen von zu speichernstrftime
, aber um einint
Array zu erstellen, werden einige Bytes bei der Indizierung gespart.quelle
JavaScript (ES6), 142 Byte
Übernimmt die Eingabe alsm o n t h ist 1-indiziert, da y0 ist die erste Ziffer des Datums und da y1 ist die zweite Ziffer.
(year, month, day0, day1)
woGibt zurück,0 für Sonntag. Wenn der zweite Wochentag leer ist, wird er auf festgelegt- 1 .
(month0, month1, day0, day1, weekDay0, weekDay1)
wo Wochentage mit 0 indiziert sindProbieren Sie es online!
quelle