Kalender Mel digunakan dalam dunia fiksi Kaldia. Tujuan Anda adalah untuk mengubah tanggal menjadi kalender Mel.
Kalender ini masing-masing memiliki 13 bulan 28 hari, ditambah 1 atau 2 hari ekstra setelah bulan lalu. Satu tahun yang dapat dibagi oleh 4 tetapi tidak oleh 100, atau dibagi oleh 400 memiliki 366 hari, dan tahun-tahun lainnya memiliki 365 (yaitu aturan tahun kabisat kami, tetapi dengan tahun dalam kalender Mel).
Anda harus menggunakan singkatan nama bulan dan hari :
bulan: dia vio lis gil ful dyu mel ral zan sobat mik fav ruj
hari: dia vio lis gil ful dyu mel ral zan pal mik fav ruj ser rav tan lin rez jil din ket len lax nen pin mat kun mir
Hari tambahan di luar bulan apa pun memiliki nama bulan myuxet
(tidak ada singkatan di sini), dan nama hari masing-masing adalah axet
dan teems
.
0 dia dia
adalah 1988/11/30.
Anda dapat mengambil tanggal input sebagai string atau tupel (tahun, bulan, hari); sebagai alternatif, untuk fungsi, parameter bisa dalam tipe tanggal perpustakaan standar Anda. Outputnya harus berupa string yang dipisahkan spasi.
Uji kasus
1776-07-04 => -213 ral ket
1859-12-15 => -129 dia rav
1917-04-14 => -72 ful nen
1981-02-04 => -8 lis mik
1988-11-30 => 0 dia dia
1988-12-01 => 0 dia vio
1988-12-28 => 0 vio dia
2017-01-01 => 28 vio ful
2019-04-22 => 30 dyu lis
2019-11-30 => 30 myuxet axet
2019-12-01 => 31 dia dia
2021-11-29 => 32 myuxet axet
2021-11-30 => 32 myuxet teems
2089-11-30 => 101 dia dia
2389-11-30 => 400 myuxet teems
Anda harus dapat menangani tanggal dari setidaknya 1 AD hingga 9999 AD.
Implementasi referensi dalam Perl 6
Celah standar dilarang.
axet
danteems
pada akhir tahun, saya bingung sampai saya melihat tautan-213 Ral Ket
?Jawaban:
Perl 6 , 174 byte
Cobalah online!
Buat daftar semua tanggal yang valid dan kemudian indeks hari dalam setahun ke dalam daftar itu.
Penjelasan
sumber
Ruby ,
199195193 byteOof, hanya
232729 byte yang disimpan di atas kode Perl sampel ...-4 byte dari @NickKennedy.
-2 byte dari @Neil.
Cobalah online!
sumber
y<364
alih-alihm<13
dan kemudian menggarisbawahi penggunaan terakhirm
. Cobalah online!Japt
-S
, 148 byteDisimpan 4 byte berkat @Shaggy. + Lebih banyak byte karena perbaikan bug. Membutuhkan bulan sebagai angka yang diindeks 0.
Japt memang memiliki penanganan tanggal bawaan, tapi itu tidak terlalu baik. Serius, 34 byte untuk menginisialisasi tanggal, lalu kurangi hari darinya, dan kemudian hitung hari apa dalam setahun?
Cobalah
sumber
-S
". Anda dapat menyimpan 2 byte dengan mengganti kedua kejadian13
denganD
. Saya akan melihat lagi di pagi hari (ketika saya tidak turun pub, di ponsel saya) untuk melihat apakah saya dapat melihat penghematan lain tetapi memiliki+1
sementara untuk mengalahkan Jelly dengan selisih yang signifikan.sT
; ada jalan pintas untuk itu;)Jelly ,
181164 byteCobalah online!
Jelly tidak memiliki penanganan tanggal bawaan, jadi ini kembali pada fungsi dalam modul waktu Python.
Penjelasan
sumber
diact viol lisk...
) ditulis aneh untuk mengompres lebih baik?C # (Visual C # Interactive Compiler) , 247 byte
Cobalah online!
sumber
JavaScript (ES6),
297269252249245 byteMengambil input sebagai objek tanggal JavaScript dalam UTC (akan 1 byte lebih sedikit sebagai nomor cap waktu JavaScript). Sunting: Disimpan
37 byte berkat @Arnauld.Cobalah online! jika cuplikan masih tidak berfungsi untuk Anda karena alasan tertentu.
sumber
30 dyu undefined
ini di Firefox.Date.UTC
panjangnya sama dengannew Date
!Haskell ,
387373372 byteCobalah online!
Mengambil input sebagai
Day
objek.Ini cukup menyenangkan untuk ditulis! Ide dasarnya adalah membuat daftar tanggal dan mengindeksnya untuk hasilnya. Fungsi
a
membutuhkan waktu satu tahun dan menghasilkan setiap tanggal pada tahun itu dalam urutan kronologis. Fungsif
meluas untuka
menyatukan mereka bersama-sama selama bertahun-tahun berturut-turut mulai dari 0. Kuncinya adalah bahwa untuk tanggal sebelum zaman kita perlu melintasi mundur mulai dari tahun -1 sehingga kita melewati nilai -1, -2 ... dan membalikkan setiap daftar secara individu sebelum menyatukan mereka. Akhirnya, dalam fungsif
kami menghitung jumlah hari antara zaman dan tanggal kami (mengubahnya dariInteger
menjadiInt
) dan indeks ke dalam daftar kami, berhati-hati untuk memperbaiki indeks kami jika itu negatif.SUNTING: memutarnya (-14)
EDIT 2: bermain golf pada daftar nama hari / bulan (-1)
sumber