Dans son xkcd sur le format de date standard ISO 8601, Randall s'est glissé dans une notation alternative plutôt curieuse:
Les grands nombres sont tous les chiffres qui apparaissent dans la date actuelle dans leur ordre habituel, et les petits nombres sont des indices basés sur 1 des occurrences de ce chiffre. Donc l'exemple ci-dessus représente 2013-02-27
.
Définissons une représentation ASCII pour une telle date. La première ligne contient les indices 1 à 4. La deuxième ligne contient les "gros" chiffres. La troisième ligne contient les indices 5 à 8. S'il y a plusieurs indices dans un même emplacement, ils sont répertoriés côte à côte du plus petit au plus grand. S'il y a au plus des m
indices dans un seul emplacement (c'est-à-dire sur le même chiffre et dans la même ligne), alors chaque colonne doit avoir des m+1
caractères larges et alignés à gauche:
2 3 1 4
0 1 2 3 7
5 67 8
Voir également le défi compagnon pour la conversion opposée.
Le défi
Étant donné une date ISO 8601 ( YYYY-MM-DD
), affichez la notation de date xkcd correspondante.
Vous pouvez écrire un programme ou une fonction, en prenant une entrée via STDIN (ou l'alternative la plus proche), un argument de ligne de commande ou un argument de fonction et en sortant le résultat via STDOUT (ou l'alternative la plus proche), la valeur de retour de la fonction ou le paramètre de la fonction (out).
Toute année de 0000
à 9999
est une entrée valide.
Les espaces de fin sont autorisés, les espaces de début ne le sont pas. Vous pouvez éventuellement générer une seule nouvelle ligne de fin.
Les règles de code-golf standard s'appliquent.
Cas de test
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