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 ISO 8601 ( YYYY-MM-DD
), mengeluarkan notasi tanggal xkcd yang sesuai.
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).
Setiap tahun dari 0000
ke 9999
adalah input yang valid.
Ruang tambahan diizinkan, ruang utama tidak. Anda dapat secara opsional menampilkan satu baris baru.
Aturan standar kode-golf berlaku.
Uji Kasus
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
Ruby,
200195189178162157 karakter(156 karakter kode + 1 opsi opsi baris perintah)
Contoh dijalankan:
sumber
Python 2.7,
308310 byteWow, memperbaikinya hanya memakan biaya 2 byte!
Tanggal tidak harus dipisahkan, tanggal bisa panjang, tanggal tidak harus tanggal, bisa berupa string apa pun (tetapi garis dihapus). Bagian tengah terlihat cukup golf bagi saya.
sumber
C #, 456
Golf:
Tidak Disatukan:
sumber
Perl6, 265 byte
Golf
Tidak disatukan (sedikit)
sumber
Python 3, 306 byte
Saya sedang menyelidiki cara untuk menentukan, sebelum merakit garis atas dan bawah, berapa lebar maksimum kolom yang diberikan. Setelah saya mendapatkannya, saya harus bisa membuat spasi menjadi garis langsung daripada menggunakan semua
join
fungsi itu.sumber
''.join
ke variabel?''.join(...)
sebagaijoin('',...)
, yang perlu "diselamatkan" sebagai fungsi saja.+=[i]
bisa+=i,
.return '\n'
->return'\n'
.Powershell,
174170168167 byteSkrip uji yang kurang golf:
Output (bilah vertikal hanya untuk melihat spasi tambahan dan depan):
sumber