In seiner xkcd über das ISO 8601 Standard-Datumsformat schlich sich Randall in eine eher kuriose alternative Notation:
Bei den großen Zahlen handelt es sich um alle Ziffern, die im aktuellen Datum in der üblichen Reihenfolge angezeigt werden, und bei den kleinen Zahlen handelt es sich um auf 1 basierende Indizes für das Vorkommen dieser Ziffer. So stellt das obige Beispiel dar 2013-02-27
.
Definieren wir eine ASCII-Darstellung für ein solches Datum. Die erste Zeile enthält die Indizes 1 bis 4. Die zweite Zeile enthält die "großen" Ziffern. Die dritte Zeile enthält die Indizes 5 bis 8. Befinden sich in einem Slot mehrere Indizes, werden diese vom kleinsten zum größten Index nebeneinander aufgeführt. Befinden sich höchstens m
Indizes in einem einzelnen Slot (dh auf derselben Ziffer und in derselben Zeile), sollte jede Spalte m+1
Zeichen breit und linksbündig sein:
2 3 1 4
0 1 2 3 7
5 67 8
Siehe auch die Begleitherausforderung für die umgekehrte Konvertierung.
Die Herausforderung
Geben Sie bei einem ISO 8601-Datum ( YYYY-MM-DD
) die entsprechende xkcd-Datumsnotation aus.
Sie können ein Programm oder eine Funktion schreiben, indem Sie eine Eingabe über STDIN (oder die nächstgelegene Alternative), ein Befehlszeilenargument oder ein Funktionsargument vornehmen und das Ergebnis über STDOUT (oder die nächstgelegene Alternative), einen Funktionsrückgabewert oder einen Funktionsparameter (out) ausgeben.
Jedes Jahr von 0000
bis 9999
ist eine gültige Eingabe.
Nachgestellte Leerzeichen sind zulässig, führende Leerzeichen nicht. Optional können Sie eine einzelne nachgestellte Newline ausgeben.
Es gelten die Standardregeln für Code-Golf .
Testfälle
2013-02-27
2 3 1 4
0 1 2 3 7
5 67 8
2015-12-24
2 3 1 4
0 1 2 4 5
5 67 8
2222-11-11
1234
1 2
5678
1878-02-08
1 3 24
0 1 2 7 8
57 6 8
2061-02-22
2 4 1 3
0 1 2 6
5 678
3564-10-28
1 4 2 3
0 1 2 3 4 5 6 8
6 5 7 8
1111-11-11
1234
1
5678
0123-12-30
1 2 3 4
0 1 2 3
8 5 6 7