Saya baru-baru ini menambahkan usia saya dan istri saya dan anak-anak dan menyadari bahwa pada suatu titik di masa depan yang tidak terlalu jauh usia kita semua akan bertambah hingga tepat 100 tahun.
Tantangan
Untuk input yang terdiri dari gabungan usia (total) dan daftar tanggal lahir, cantumkan tanggal di mana semua umur gabungan ditambahkan hingga total yang diberikan.
- Input gabungan usia (dalam tahun) akan menjadi bilangan bulat positif
- Daftar input tanggal lahir akan menjadi daftar (format apa pun yang sesuai untuk bahasa Anda) dari tanggal yang harus mengandung representasi numerik dari Hari, Bulan dan Tahun. Jumlah hari sejak zaman tertentu tidak dapat diterima. Anda dapat mengasumsikan daftar tanggal input diurutkan dalam urutan kronologis.
- Output akan berupa satu tanggal dalam format yang sama dengan tanggal input
- Untuk keperluan usia gabungan, 1 tahun dianggap tepat 365,25 hari
- Untuk beberapa input, tidak mungkin untuk menemukan tanggal setelah semua tanggal lahir ketika mereka semua menambahkan hingga usia gabungan. Sebagai contoh, pertimbangkan dua tanggal lahir yang terpisah 20 tahun, tetapi kami ingin gabungan 10 tahun. Dalam hal ini, hasilnya adalah ulang tahun ke 10 dari tanggal lahir yang lebih tua. Dengan kata lain, usia individu dianggap 0 untuk semua tanggal sebelum tanggal lahir individu itu
- Output akan menjadi tanggal pertama di mana usia gabungan ditambahkan hingga setidaknya usia input
- Anda dapat menggunakan fungsi waktu tanggal bawaan
- Anda harus mendukung tanggal sejak 1970/01/01.
Contohnya
Di sini saya memberikan semua tanggal dalam format YYYY / MM / DD, tetapi Anda dapat memformat apa pun yang Anda suka.
Input Output
10 2000/01/01 2010/01/01
100 1975/03/05,1978/07/23,2008/11/12,2012/12/20 2018/11/22
100 1975/03/06,1978/07/23,2008/11/12,2012/12/20 2018/11/23
100 1975/03/09,1978/07/23,2008/11/12,2012/12/20 2018/11/23
100 1975/03/10,1978/07/23,2008/11/12,2012/12/20 2018/11/24
3 1990/08/01,1995/07/02 1993/08/01
50 1975/03/05,1978/07/23,2008/11/12,2012/12/20 2001/11/13
Perhatikan bahwa dalam dua contoh terakhir, tanggal keluaran terletak dalam kisaran tanggal input, sesuai aturan 5.
Jawaban:
Mathematica
138 107237 byteUpaya pertama saya ceroboh dan tidak layak. Ini harus bekerja secara umum, asalkan tanggal lahir diberikan dalam urutan paling awal hingga terbaru, seperti dalam kasus-kasus tes.
Kasus uji dipilih dengan baik dan sulit diimplementasikan dengan benar. Kode ternyata jauh lebih lama dari yang saya harapkan.
Logikanya umum adalah untuk
Uji Kasus
sumber
PowerShell,
145125 BytesTantangan yang cukup rumit, tetapi relatif mudah dipahami.
Diperluas dan Dikomentari:
Contoh:
Input perlu mengandung array yang diformat secara eksplisit dari representasi string-date. Output dalam
MM/DD/YYYY
format (default untuk lokalisasi en-us di PowerShell).Sunting - Memotong 20 byte dengan mengubah cara kita mengulangi ulang tahun, dan dengan menggunakan saat alih-alih melakukan / sampai
sumber
PHP, 220 byte
Saya telah menambahkan beberapa baris baru untuk keterbacaan.
Ideone
Ini adalah versi yang tidak dikoleksi:
sumber