Untuk kalender Gregorian, format tanggal bervariasi dari satu negara ke negara lain. Ada tiga format utama yang diakui:
YY-MM-DD
(big-endian)DD-MM-YY
(little-endian)MM-DD-YY
(mid-endian)
Tugas Anda adalah menulis sebuah program yang, mengingat string input yang mewakili tanggal, menampilkan semua format tanggal yang memungkinkan string ini dapat ditafsirkan sebagai tanggal.
Aturan
- Tanggal input dalam format
xx-xx-xx
, di mana setiap bidang adalah dua digit dan nol-empuk. - Tanggal selalu valid (jadi Anda tidak bisa mendapatkan hal-hal seperti 14-13-17)
- Tanggal selalu setidaknya salah satu format di atas (jadi Anda tidak bisa mendapatkan hal-hal seperti 17-14-11)
- Karena kita sebenarnya berada di dunia paralel, ada 31 hari untuk setiap bulan dalam setahun , dan akibatnya tidak ada tahun kabisat
- Tanggalnya adalah antara 01 Januari 2001 dan 31 Desember 2099
- Jika hanya ada satu format untuk tanggal, kode harus mencetak hanya itu (hanya trailing baris baru yang dibolehkan)
- Jika ada beberapa format untuk tanggal, mereka harus dipisahkan oleh koma, spasi, baris baru, atau kombinasi dari mereka
- Anda harus menampilkan nama persis format. Tidak diperbolehkan menggunakan nilai arbitrer yang berbeda.
- Tidak ada karakter yang memimpin atau mengekstraksi selain dari ruang jejak yang diizinkan
- Outputnya harus huruf kecil
- Anda tidak diizinkan menggunakan fungsi tanggal atau kalender bawaan
- Format output tidak harus disortir
Contohnya
Input Output
30-05-17 big-endian, little-endian
05-15-11 middle-endian
99-01-02 big-endian
12-11-31 big-endian, little-endian, middle-endian
02-31-33 middle-endian
Ini adalah kode-golf sehingga kode terpendek dalam byte menang. Penjelasan didorong.
there are 31 days for every month of the year, and consequently no leap years
Jadi ini berarti ada pustaka tanggal secara efektif tidak berguna untuk ini?Jawaban:
05AB1E , 40 byte
Cobalah online!
Penjelasan
sumber
Python 2 , 123 byte
Cobalah online!
Python 2 , input parsing lebih sedikit, 123 byte
Cobalah online!
sumber
,
.JavaScript (ES6),
121119118112 byteMengembalikan string yang dibatasi ruang dengan spasi tambahan.
Bagaimana?
Kami membagi input menjadi a , b dan c . Karena tanggal dijamin valid, kami tahu pasti bahwa b kurang dari 32. Oleh karena itu, cukup untuk menguji apakah a kurang dari 13 untuk memvalidasi format mid-endian. Format Little-endian dan big-endian membutuhkan b kurang dari 13 dan tes lain pada a dan c masing-masing untuk memvalidasi hari.
Oleh karena itu 3 tes:
Uji kasus
Tampilkan cuplikan kode
sumber
Bash,
240125116112 byteGolf.
Berkat manatwork untuk beberapa tips
Disimpan 9 byte menghapus verifikasi kurang dari 32 dalam jawaban Arnauld follower tengah-endian
Disimpan 4 byte dengan menggunakan variabel yang berbeda, bukan array
Menguji!
sumber
C #, 180 byte
Keluaran dengan hanya nilai-nilai yang dipisahkan ruang, juga dapat memiliki spasi awal dan akhir. Akan memperbarui ketika OP telah mengklarifikasi tentang hal itu jika diperlukan.
Versi Lengkap / Terformat:
sumber
No leading or trailing characters others than a trailing space are allowed
PHP, 151 Bytes
Testcases
sumber
Batch, 138 byte
Samar-samar berdasarkan jawaban @ ovs.
sumber
Java 232 byte
Ini versi yang lebih bagus
Saya tidak benar-benar tahu cara memformat bagian ini ...
sumber
String e="-endian",b="big"+e,m="middle"+e,l="little"+e;
.PHP, 131 byte
sumber