Bir ofis (buna "Ofis" diyelim) 2019 yılında ofis doğum günü partilerini birleştirerek boşa harcanacak zamanı azaltacak. Aynı haftanın Pazartesi ve Cuma günleri (dahil) arasında doğum günü olan iki kişi, o hafta bir saatte Paylaşılan Doğum Günü Partisi ile birlikte kutlanacak . Doğum günleri cumartesi veya pazar günleri düşenlere parti verilmez.
Bazı insanlar, doğum günlerini gerçek doğum günlerini paylaşmayan insanlarla paylaşmayı sevmezler. Paylaşılan Doğum Günü Partisi için çok Kızgın olacaklar .
Bir ofisi simüle edeceğiz ve birinin Paylaşılan Doğum Günü Partisi hakkında Çok Kızgınlaştığı ilk haftayı bulacağız .
Meydan okuma
Simüle edilmiş bir ofiste birinin Paylaşılan Doğum Günü Partisi hakkında Çok Kızgınlaştığı 2019 için ilk ISO hafta numarasını veren bir program veya işlev yazın , aşağıdaki temel kurallara tabidir:
- ofiste çalışan sayısı olan N > 1 tamsayısını girin .
- N kendilerini 31 Ara Jan 1 rastgele eşit olarak dağılmış olan doğum (Şubat 29 yok say).
- ancak Paylaşılan Doğum Günü Partilerini belirlemek için çalışma haftaları 2019-W01-1 (2018-12-31) ile 2019-W52-7 (2019-12-29) arasında olan 2019 ISO Hafta Tarihleri'dir. Her pazartesi yeni bir ISO haftası başlıyor. (Bu zorluk için ISO haftaları hakkında bilmeniz gereken tek şey budur).
- için N ofiste insanlar, her bir sahip bir 1/3 şans Çok Kızgın Paylaşılan doğum günü partisi bunu da simüle etmek gerekecek böylece, kişilik tipini.
- ancak parti aynı doğum günü olan insanlarla paylaşılırsa kızmazlar.
- Çok Öfkeli bir kişinin ilk ortaya çıkışında ISO hafta numarasını (bunun için tam biçim hafta sayısı açık olduğu sürece esnektir) çıktılayın . Öfkeli insanlar yoksa, bir ISO haftasıyla karıştırılmamış herhangi bir şey çıktısı alabilirsiniz veya program hata verebilir.
Bazı basitleştirici varsayımlar:
- belirttiğim gibi, 29 Şubat meselesini tamamen görmezden gelin (gereksiz bir komplikasyon)
- resmi tatilleri görmezden gelin (bu uluslararası bir topluluktur, bu yüzden tatillerimiz farklı olacaktır) ve ofisin hafta içi her gün açık olduğunu varsayalım.
kurallar
Bu kod golfü. Her dil için bayt cinsinden en kısa cevap kazanır. Varsayılan boşluklar yasaktır.
Kod açıklamaları hoş geldiniz.
Çalışılan Örnekler
Giriş N = 7 olan Örnek 1. Birinci ve ikinci sütunlar, kurallarda açıklandığı gibi rastgele (ancak burada elbette rastgele değil).
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
Yani öfke olmaz. Program veya işlev hata yapabilir veya bir ISO hafta numarası ile karıştırılmamış bir şey çıktısı verebilir.
Örnek 2, N belirtilmemiş.
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
... ... ... ...
Çıktı W11veya eşdeğeri bir şey olurdu .