Sebuah kantor (sebut saja "Kantor") akan mengurangi waktu terbuang pada tahun 2019 dengan menggabungkan pesta ulang tahun kantor. Dua orang yang berulang tahun antara hari Senin dan Jumat (termasuk) dari minggu yang sama akan dirayakan dengan Pesta Ulang Tahun Bersama beberapa waktu dalam minggu itu. Orang-orang yang ulang tahunnya jatuh pada hari Sabtu atau Minggu tidak mendapat pesta sama sekali.
Beberapa orang tidak suka berbagi pesta ulang tahun dengan orang-orang yang tidak membagikan ulang tahun mereka yang sebenarnya. Mereka akan sangat marah memiliki Pesta Ulang Tahun Bersama .
Kami akan mensimulasikan kantor dan menemukan minggu pertama di mana seseorang menjadi sangat marah tentang Pesta Ulang Tahun Bersama mereka .
Tantangan
Tulis program atau fungsi yang menghasilkan angka minggu ISO pertama untuk 2019 di mana seseorang di kantor yang disimulasikan menjadi sangat marah tentang Pesta Ulang Tahun Bersama mereka , tunduk pada aturan dasar berikut:
- masukan bilangan bulat N > 1, yang merupakan jumlah pekerja di kantor.
- yang N ulang tahun sendiri terdistribusi secara merata secara acak dari 1 Januari - 31 Desember (mengabaikan Februari 29).
- tetapi minggu kerja untuk tujuan menentukan Pesta Ulang Tahun Bersama adalah Tanggal Pekan ISO 2019, yaitu antara 2019-W01-1 (2018-12-31) dan 2019-W52-7 (2019-12-29). Minggu ISO baru dimulai setiap hari Senin. (Saya pikir ini semua yang perlu Anda ketahui tentang ISO minggu untuk tantangan ini).
- untuk orang- orang N di kantor, masing-masing memiliki peluang 1/3 untuk memiliki tipe kepribadian Pesta Ulang Tahun yang Sangat Marah , jadi Anda harus mensimulasikannya juga.
- tetapi mereka tidak akan marah jika pesta itu dibagikan kepada orang-orang yang memiliki ulang tahun yang sama .
- mengeluarkan nomor minggu ISO (format yang tepat untuk ini fleksibel selama jumlah minggu jelas) untuk kemunculan pertama orang yang Sangat Marah . Jika tidak ada orang yang marah, Anda dapat menampilkan apa pun yang tidak bingung dengan minggu ISO atau program dapat kesalahan keluar dll.
Beberapa asumsi penyederhanaan:
- seperti yang saya sebutkan, abaikan masalah 29 Februari sepenuhnya (komplikasi yang tidak dibutuhkan)
- abaikan hari libur umum (ini adalah komunitas internasional sehingga liburan kami akan berbeda) dan anggap saja kantor buka pada setiap hari kerja.
Aturan
Ini adalah kode-golf. Jawaban terpendek dalam byte untuk setiap bahasa menang. Celah default dilarang.
Penjelasan kode diterima.
Contoh yang berhasil
Contoh 1 dibuat dengan input N = 7. Kolom pertama dan kedua acak seperti yang dijelaskan dalam aturan (tapi tentu saja tidak acak di sini).
Angry Type
Person? Birthday ISO Week Comment
================================================================================
N 2018-12-31 W01 In the 2019 ISO week date year
Y 2018-12-31 W01 Same birthday, so no anger happens
N 2019-02-05 W06
Y 2019-03-15 W11 No anger happens because other W11 b-day is a Saturday
N 2019-03-16 W11
N 2019-09-08 W36 My birthday!
Y 2019-12-30 - Not in the 2019 ISO week date year
Jadi tidak ada kemarahan yang terjadi. Program atau fungsi dapat membuat kesalahan atau mengeluarkan sesuatu yang tidak dikacaukan dengan angka minggu ISO.
Contoh 2 dengan N tidak ditentukan.
Angry Type
Person? Birthday ISO Week Comment
================================================================================
N 2019-01-19 W03
Y 2019-02-04 W06
N 2019-02-05 W06 No anger because not an angry person
... ... ... (No angry people until...)
Y 2019-03-12 W11 Very Angry Person!
N 2019-03-14 W11
... ... ... ...
Outputnya akan menjadi W11
atau sesuatu yang setara.