एक कार्यालय (चलो इसे "द ऑफिस" कहते हैं) कार्यालय जन्मदिन पार्टियों को समेकित करके 2019 में व्यर्थ समय में कटौती करने जा रहा है। उसी सप्ताह के सोमवार और शुक्रवार (समावेशी) के बीच जन्मदिन वाले किसी भी दो लोगों को उस सप्ताह कुछ समय साझा बर्थडे पार्टी के साथ मनाया जाएगा । जिन लोगों का जन्मदिन शनिवार या रविवार को पड़ता है, उन्हें कोई पार्टी नहीं मिलती है।
कुछ लोग ऐसे लोगों के साथ जन्मदिन की पार्टी साझा करना पसंद नहीं करते हैं जो अपना वास्तविक जन्मदिन साझा नहीं करते हैं। वे एक साझा जन्मदिन की पार्टी करने के लिए वेरी एंग्री होंगे ।
हम एक कार्यालय का अनुकरण करने जा रहे हैं और पहले सप्ताह का पता लगा रहे हैं जिसमें कोई व्यक्ति अपने साझा जन्मदिन की पार्टी के बारे में बहुत गुस्से में है ।
चुनौती
एक प्रोग्राम या फ़ंक्शन लिखें जो 2019 के लिए पहले आईएसओ सप्ताह नंबर को आउटपुट करता है जिसमें किसी नकली कार्यालय में किसी को अपने साझा जन्मदिन की पार्टी के बारे में बहुत गुस्सा आता है , जो निम्नलिखित बुनियादी नियमों के अधीन है:
- इनपुट एक पूर्णांक N > 1, जो कार्यालय में श्रमिकों की संख्या है।
- एन जन्मदिन खुद को 31 दिसंबर करने के लिए 1 जनवरी से यादृच्छिक पर समान रूप से वितरित कर रहे हैं (उपेक्षा 29 फरवरी)।
- लेकिन साझा जन्मदिन पार्टियों के निर्धारण के उद्देश्यों के लिए कार्य सप्ताह 2019 आईएसओ सप्ताह तिथियां हैं, जो 2019-W01-1 (2018-12-31) और 2019-W52-7 (2019-12-29) के बीच हैं। हर सोमवार को एक नया आईएसओ सप्ताह शुरू होता है। (मुझे लगता है कि यह सब आपको वास्तव में इस चुनौती के लिए आईएसओ सप्ताह के बारे में जानने की आवश्यकता है)।
- के लिए एन कार्यालय में लोगों, प्रत्येक एक होने का एक मौका है 1/3 बहुत गुस्से में साझा जन्मदिन पार्टी , व्यक्तित्व के प्रकार ताकि आप वह भी अनुकरण करना होगा।
- लेकिन वे नाराज नहीं होंगे यदि पार्टी को उन लोगों के साथ साझा किया जाता है जिनके जन्मदिन समान हैं ।
- बहुत ही गुस्से वाले व्यक्ति की पहली घटना के लिए आईएसओ सप्ताह संख्या (इसके लिए सटीक प्रारूप तब तक लचीला होता है जब तक कि सप्ताह संख्या स्पष्ट है) । यदि कोई क्रोधित लोग नहीं हैं, तो आप कुछ भी आउटपुट कर सकते हैं जो आईएसओ सप्ताह के साथ भ्रमित नहीं है या प्रोग्राम त्रुटि कर सकता है आदि।
कुछ सरल धारणाएँ:
- जैसा कि मैंने उल्लेख किया है, 29 फरवरी के मुद्दे को पूरी तरह से अनदेखा करें (एक अनावश्यक जटिलता)
- सार्वजनिक छुट्टियों को अनदेखा करें (यह एक अंतर्राष्ट्रीय समुदाय है इसलिए हमारी छुट्टियां अलग-अलग होंगी) और मान लें कि कार्यालय प्रत्येक सप्ताह के दिन खुला है।
नियम
यह कोड-गोल्फ है। प्रत्येक भाषा के लिए बाइट्स में सबसे छोटा उत्तर जीतता है। डिफ़ॉल्ट कमियां निषिद्ध हैं।
कोड स्पष्टीकरण का स्वागत करते हैं।
काम के उदाहरण
इनपुट N = 7. के साथ कंट्रास्टेड उदाहरण 1। पहले और दूसरे कॉलम यादृच्छिक हैं जैसा कि नियमों में वर्णित है (लेकिन वास्तव में यहां यादृच्छिक नहीं है)।
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
तो कोई क्रोध नहीं करता। प्रोग्राम या फ़ंक्शन किसी आईएसओ सप्ताह की संख्या के साथ भ्रमित नहीं होने या कुछ आउटपुट करने में त्रुटि कर सकता है।
उदाहरण 2 अनिर्दिष्ट एन के साथ ।
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
... ... ... ...
आउटपुट W11
या कुछ समतुल्य होगा।