Dans son xkcd sur le format de date standard ISO 8601, Randall s'est fié à une notation alternative plutôt curieuse:
Les grands nombres sont tous les chiffres qui apparaissent dans la date du jour dans leur ordre habituel, et les petits nombres sont des index 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 index 1 à 4. La seconde ligne contient les "gros" chiffres. La troisième ligne contient les index 5 à 8. S'il existe plusieurs index dans un seul emplacement, ils sont énumérés les uns à côté des autres, du plus petit au plus grand. S'il y a au plus des m
index dans un seul emplacement (c'est-à-dire sur le même chiffre et dans la même ligne), chaque colonne doit alors comporter des m+1
caractères larges et alignés à gauche:
2 3 1 4
0 1 2 3 7
5 67 8
Voir aussi le défi associé à la conversion opposée.
Le défi
Avec une date en notation xkcd, éditez la date ISO 8601 correspondante ( YYYY-MM-DD
).
Vous pouvez écrire un programme ou une fonction en prenant l’entrée via STDIN (ou l’alternative la plus proche), un argument de ligne de commande ou une argumentation de fonction et en générant le résultat via STDOUT (ou l’alternative la plus proche), une valeur de retour de fonction ou un paramètre de fonction (out).
Vous pouvez supposer que la saisie est une date valide comprise entre années 0000
et 9999
inclus.
Il n'y aura pas d'espaces de début dans l'entrée, mais vous pouvez supposer que les lignes sont complétées d'espaces par un rectangle, qui contient au plus une colonne d'espaces de fin.
Les règles standard de code-golf s'appliquent.
Cas de test
2 3 1 4
0 1 2 3 7
5 67 8
2013-02-27
2 3 1 4
0 1 2 4 5
5 67 8
2015-12-24
1234
1 2
5678
2222-11-11
1 3 24
0 1 2 7 8
57 6 8
1878-02-08
2 4 1 3
0 1 2 6
5 678
2061-02-22
1 4 2 3
0 1 2 3 4 5 6 8
6 5 7 8
3564-10-28
1234
1
5678
1111-11-11
1 2 3 4
0 1 2 3
8 5 6 7
0123-12-30
1
est au-dessus 2
, le premier chiffre est donc 2
. 2
est au-dessus 0
, donc le deuxième chiffre est 0
. 3
est au-dessus 1
, 4
est au-dessus 3
, nous obtenons donc 2013
comme les quatre premiers chiffres. Maintenant 5
est en dessous 0
, donc le cinquième chiffre est 0
, 6
et 7
les deux sont en dessous 2
, donc ces deux chiffres sont 2
. Et enfin, 8
est en dessous 7
, donc le dernier chiffre est 8
, et nous nous retrouvons avec 2013-02-27
. (Les traits d'union sont implicites dans la notation xkcd car nous savons à quelles positions ils apparaissent.)