Sepertinya kita belum memiliki yang ini, jadi di sini kita mulai:
Tantangan
Tulis program atau fungsi yang mengambil tanggal sebagai input dan menampilkan nomor hari dalam setahun. Anda tidak boleh menggunakan builtin untuk itu!
Aturan
- Seperti biasa Anda dapat menulis program atau fungsi lengkap.
- Format input terserah Anda, tetapi harus mengandung satu tahun, satu bulan dan satu hari. Jelaskan solusi mana yang Anda gunakan!
- Tidak ada bawaan terkait tanggal diizinkan! Anda harus melakukan pekerjaan sendiri. Builtin yang tidak terkait dengan operasi tanggal baik-baik saja.
- Basis untuk perhitungan adalah kalender gregorian.
- Anda harus memperhitungkan tahun kabisat.
- Anda hanya perlu menangani tahun dalam kisaran [1, 9999]
- Celah standar dilarang.
- Hitungan byte terendah menang!
Testcases
Format input di sini adalah YYYY / MM / DD
2016/07/05 -> 187
2000/03/28 -> 88
0666/06/06 -> 157
6789/10/11 -> 284
0004/04/04 -> 95
1337/07/13 -> 194
Selamat Coding!
Jawaban:
Pyth, 31 byte
Terima kasih kepada @Dennis dan @Jakube untuk porsi tahun kabisat . Input adalah YYYY, MM, DD pada saluran yang terpisah.
Suite uji .
sumber
JavaScript ES6,
8169 byteDengan asumsi bulan berbasis 1, kalau tidak saya bisa menghemat 2 byte.
Sunting: Disimpan 12 byte menggunakan tip @ user81655.
sumber
C,
961028961 bytesumber
Python 3,
152148150 byteMembawa tanggal dalam format "MD YYYY".
sumber
print n[m-1]+d
Python 2,
10082 bytePort Python dari jawaban @ Neil :
Seperti jawaban sebelumnya, menambahkan 17 byte (total 99 byte) akan menghasilkan program lengkap:
Jawaban sebelumnya:
Sebagai lambda anonim:
Dapat dikonversi ke nama lambda untuk penalti 2 byte. Atau, program lengkap (mengambil input dalam format
D,M,Y
) dapat dicapai untuk 117 byte:sumber
Python 3, 125 byte
Pendekatan lain untuk masalah ini. Kode mengambil keuntungan dari prioritas eksekusi aljabar boolean Python dan karena
not
merupakan operasi terakhir, konversi ke boolean otomatis. Ketika penjumlahan dilakukan, boolean diperlakukan sebagai 1 atau 0. Format input adalah string "YY MM DDDD". Sistem input diinspirasi oleh @ SteveEckert yang serupa.Bentuk lain sebagai fungsi, 91 byte
Dalam hal ini input adalah tiga bilangan bulat, bulannya antara 0-11. Ini akan bekerja di Python 2 juga.
sumber
Excel, 106 byte
Mengambil input dalam tiga sel
A1
= Tahun,B1
= Bulan,C1
= Hari.1
jika LeapYear, yang lain0
Banyak dari
30
, PILIH untuk hari-hari tambahan, ditambah hari dalam sebulanEvolusi:
sumber