छह मुख्य कलाकारों के सदस्यों अमेरिकी सिटकॉम के दोस्त सब सहमत थे कि वे एक ही वेतन का भुगतान किया जाएगा (सीजन 2 के बाद, कम से कम) श्रृंखला के प्रसारण अवधि के दौरान। लेकिन इसका मतलब यह नहीं है कि उन सभी के पास हवा की मात्रा समान थी या वे सभी एक-दूसरे के साथ एक ही राशि के साथ स्क्रीन पर बातचीत करते थे।
इस चुनौती में, आप एक कार्यक्रम लिखेंगे जो यह निर्धारित करने में मदद कर सकता है कि कौन से मित्र मित्र वास्तव में सर्वश्रेष्ठ थे ।
सेट अप
फ्रेंड्स के एक एपिसोड या सीन को देखने और प्रत्येक कैमरा शॉट के दौरान स्क्रीन पर कौन है और कितने समय के लिए है, इस पर ध्यान देने पर विचार करें ।
हम प्रत्येक चरित्र का नाम संक्षिप्त करेंगे:
फिर हर कैमरे के शॉट के लिए (या हर बार जब कोई पात्र शॉट में प्रवेश करता है / बाहर निकलता है), तो हम सूची देंगे कि स्क्रीन पर कौन था। उदाहरण के लिए:
504 CRS
200 J
345 MP
980
2000 CJMPRS
यह कह रहा है कि:
- 504ms के लिए, चैंडलर, राहेल और रॉस स्क्रीन पर थे।
- तब 200ms के लिए, जॉय था।
- फिर 345ms के लिए, मोनिका और फोएबे थे।
- तब 980ms के लिए, 6 मुख्य पात्रों में से कोई भी स्क्रीन पर नहीं था।
- फिर 2 सेकंड के लिए, वे सभी थे।
(यह एक वास्तविक क्लिप से नहीं है, मैंने इसे बनाया है।)
ध्यान दें कि निम्नलिखित समतुल्य होगा:
504 CRS
1 J
199 J
345 MP
980
2000 CJMPRS
यह पता लगाने के लिए कि किस वर्ण के संयोजन में सबसे अधिक स्क्रीन समय था, हम 6 वर्णों के सभी 64 संभावित सबसेट को देखते हैं और स्क्रीन का कुल समय उनके पास है। यदि सबसेट में हर कोई स्क्रीन पर एक कैमरा शॉट के दौरान दिखाई देता है, भले ही सबसेट में केवल वर्णों की तुलना में अधिक वर्ण हों , तो उस कैमरा शॉट का समय उस सबसेट के कुल स्क्रीन समय में जोड़ा जाता है।
खाली उपसमूह के लिए एक अपवाद है - केवल 6 मुख्य पात्रों में से कोई भी दृश्य गिना जाता है।
तो उपरोक्त उदाहरण का विश्लेषण होगा:
980
2504 C
2200 J
2345 M
2345 P
2504 R
2504 S
2000 CJ
2000 CM
2000 CP
2504 CR
2504 CS
2000 JM
2000 JP
2000 JR
2000 JS
2345 MP
2000 MR
2000 MS
2000 PR
2000 PS
2504 RS
2000 CJM
2000 CJP
2000 CJR
2000 CJS
2000 CMP
2000 CMR
2000 CMS
2000 CPR
2000 CPS
2504 CRS
2000 JMP
2000 JMR
2000 JMS
2000 JPR
2000 JPS
2000 JRS
2000 MPR
2000 MPS
2000 MRS
2000 PRS
2000 CJMP
2000 CJMR
2000 CJMS
2000 CJPR
2000 CJPS
2000 CJRS
2000 CMPR
2000 CMPS
2000 CMRS
2000 CPRS
2000 JMPR
2000 JMPS
2000 JMRS
2000 JPRS
2000 MPRS
2000 CJMPR
2000 CJMPS
2000 CJMRS
2000 CJPRS
2000 CMPRS
2000 JMPRS
2000 CJMPRS
हम देख सकते हैं कि J
(सिर्फ जॉय) के पास 2200ms का स्क्रीन टाइम था क्योंकि उसके पास खुद 200 और सबके साथ 2000 थे।
चुनौती
एक प्रोग्राम लिखें जो एक स्ट्रिंग या टेक्स्ट फ़ाइल में लेता है जैसे
504 CRS
200 J
345 MP
980
2000 CJMPRS
जहां प्रत्येक पंक्ति में रूप है [time in ms] [characters on screen]
, और स्क्रीन पर बिताए गए 6 वर्णों के 64 सबसेट में से प्रत्येक के समय की कुल मात्रा को आउटपुट करता है, जहां प्रत्येक पंक्ति का रूप [total time in ms for subset] [characters in subset]
(ऊपर जैसा है) है।
इनपुट को स्ट्रिंग के रूप में, कमांड लाइन, या फ़ंक्शन पर ले जाया जा सकता है, या यह एक पाठ फ़ाइल का नाम हो सकता है जिसमें डेटा होता है।
- मिलीसेकंड संख्या हमेशा सकारात्मक पूर्णांक होगी।
- वर्ण अक्षर हमेशा क्रम
CJMPRS
(वर्णमाला) में होंगे। - आप वैकल्पिक रूप से मान सकते हैं कि दृश्य में कोई वर्ण नहीं है (जैसे
980
)। - आप वैकल्पिक रूप से मान सकते हैं कि एक अनुगामी न्यूलाइन है।
- इनपुट में कम से कम 1 पंक्ति होगी और इसमें कई मनमानी हो सकती हैं।
आउटपुट को 64 लाइन स्ट्रिंग के रूप में मुद्रित या लौटाया जाना चाहिए या किसी अन्य पाठ फ़ाइल में लिखा जाना चाहिए।
- लाइनें किसी भी क्रम में हो सकती हैं।
- वर्ण अक्षरों को
CJMPRS
क्रम में होने की आवश्यकता नहीं है । - 0ms कुल समय के साथ सबसेट करते सूचीबद्ध होने के लिए की जरूरत है।
- खाली उप-कुल के बाद वैकल्पिक रूप से एक अनुगामी स्थान हो सकता है।
- वैकल्पिक रूप से एक अनुगामी न्यूलाइन हो सकती है।
(यह समस्या निश्चित रूप से अधिक वर्णों के लिए सामान्यीकृत की जा सकती है, लेकिन हम 6 CJMPRS
मित्र वर्णों से चिपके रहेंगे ।)
बाइट्स में सबसे छोटा कोड जीतता है।
ध्यान दें कि मैं वास्तव में फ्रेंड्स का आनंद लेता हूं और यह नहीं सोचता कि कुछ अक्षर दूसरों की तुलना में अधिक महत्वपूर्ण हैं। हालांकि आंकड़े दिलचस्प होंगे। ;)