Dalam xkcd-nya tentang format tanggal standar ISO 8601 Randall menyelinap di notasi alternatif yang agak aneh:
Angka-angka besar adalah semua digit yang muncul pada tanggal saat ini dalam urutan yang biasa, dan angka-angka kecil adalah indeks berbasis 1 dari kemunculan digit itu. Jadi contoh di atas mewakili 2013-02-27
.
Mari kita mendefinisikan representasi ASCII untuk tanggal seperti itu. Baris pertama berisi indeks 1 hingga 4. Baris kedua berisi angka "besar". Baris ketiga berisi indeks 5 hingga 8. Jika ada beberapa indeks dalam satu slot, mereka terdaftar bersebelahan dari yang terkecil hingga yang terbesar. Jika ada paling banyak m
indeks dalam slot tunggal (yaitu pada digit yang sama, dan di baris yang sama), maka setiap kolom harus memiliki m+1
karakter lebar dan rata kiri:
2 3 1 4
0 1 2 3 7
5 67 8
Lihat juga tantangan rekan untuk pertobatan yang berlawanan.
Tantangan
Diberi tanggal dalam notasi xkcd, mengeluarkan tanggal ISO 8601 yang sesuai ( YYYY-MM-DD
).
Anda dapat menulis sebuah program atau fungsi, mengambil input melalui STDIN (atau alternatif terdekat), argumen baris perintah atau argumen fungsi dan mengeluarkan hasilnya melalui STDOUT (atau alternatif terdekat), nilai pengembalian fungsi atau parameter function (out).
Anda dapat berasumsi bahwa input adalah tanggal yang valid antara tahun 0000
dan 9999
, termasuk.
Tidak akan ada spasi utama di input, tetapi Anda dapat mengasumsikan bahwa garis-garisnya diisi dengan spasi ke persegi panjang, yang berisi paling banyak satu kolom spasi tambahan.
Aturan standar kode-golf berlaku.
Uji Kasus
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
atas 2
, jadi digit pertama adalah 2
. 2
di atas 0
, jadi digit kedua adalah 0
. 3
di atas 1
, di 4
atas 3
, jadi kita dapatkan 2013
sebagai empat digit pertama. Sekarang di 5
bawah 0
, jadi digit kelima adalah 0
, 6
dan 7
keduanya di bawah 2
, jadi keduanya adalah digit 2
. Dan akhirnya, 8
ada di bawah 7
, jadi digit terakhir adalah 8
, dan kita berakhir dengan 2013-02-27
. (Tanda hubung tersirat dalam notasi xkcd karena kita tahu pada posisi apa mereka muncul.)