ब्लॉकबॉक्स है कि हेक्स?


11

किसी भी प्रोग्रामिंग भाषा में एक प्रोग्राम या एक फ़ंक्शन लिखें जो 6 अंकों का हेक्साडेसिमल इनपुट / तर्क लेता है। इनपुट / तर्क 6 मान या 6 वर्ण स्ट्रिंग हो सकता है।

आपके प्रोग्राम को वर्णों के बिल्कुल 8 वर्णों वाले आयताकार ब्लॉक का उत्पादन करना चाहिए जिसमें केवल हेक्साडेसिमल शामिल हैं जो रिक्त स्थान (+ फीडफीड) के साथ संयुक्त हैं। आयताकार ब्लॉक छोटे ब्लॉक आकृतियों का एक संयोजन है, जो 6 आपूर्ति मूल्यों में से प्रत्येक के लिए एक है।

यहाँ 2 डेमोस्ट्रेटिव सैंपल इनपुट्स और सैंपल वैलिड आउटपुट दिए गए हैं:

नमूना इनपुट :

"464fa6" or [4, 6, 4, 15, 10, 6]

एक मान्य समाधान आउटपुट :

44 66 ff
44 66 ff
   66 ff
aa     f
aaa ffff
aa  ffff
aaa     
    6 44
66666 44

नमूना इनपुट :

"35bf12"

एक मान्य समाधान आउटपुट :

55555 22

bbbbbbbb
b b b   
      33
fffff  3
ff  ff  
ffffff 1

नियम:

  1. आउटपुट एक आयताकार आकार होना चाहिए

  2. आउटपुट किसी भी वर्टिकल हाइट का हो सकता है, लेकिन इसमें 8 अक्षर चौड़े होने चाहिए

  3. "इनर ब्लॉक" को "ब्लॉक शेप" के रूप में संदर्भित किया जाता है, किसी अन्य ब्लॉक शेप से कनेक्ट नहीं हो सकता है, ब्लॉक शेप को कंबल की दीवार से बिल्कुल 1 वर्ण चौड़ा क्षैतिज, लंबवत और तिरछे रूप से अलग किया जाना चाहिए।

  4. कंबल की दीवार बाहरी किनारों को समानांतर नहीं चला सकती है, आउटपुट किनारों पर केवल 1 वर्ण चौड़ी दीवार-किनारों का अस्तित्व हो सकता है। आउटपुट पर बाहरी आयत किनारे पर कहीं भी कोई लिंक नहीं होना चाहिए।

  5. रिक्त स्थान की दीवार की चौड़ाई 1 वर्ण से अधिक नहीं होनी चाहिए।

  6. आंतरिक ब्लॉक आकार x वर्णों के क्षेत्र के साथ एक समान होना चाहिए, जहां x हेक्साडेसिमल मान की आपूर्ति की जाती है और आकृति में चारित्र x शामिल होना चाहिए जहां x हेक्साडेसिमल वर्ण प्रतिनिधि है।

  7. आंतरिक ब्लॉक आकार किसी भी रूप का हो सकता है जब तक कि सभी आकार के अक्षर लंबवत या क्षैतिज रूप से जुड़ते हैं, और कंबल की दीवार के लिए नियमों को मान्य नहीं करते हैं।

  8. 6 ब्लॉक आकृतियों को आउटपुट किए गए आयत के अंदर किसी भी आंतरिक "ऑर्डर" में रखा जा सकता है।

  9. प्रत्येक इनपुट के लिए वैध इनपुट रेंज: 1 ... 15 ("1" ... "f")। आपके प्रोग्राम के इनपुट में 6 हेक्साडेसिमल संख्याओं की तुलना में कोई अन्य जानकारी नहीं होनी चाहिए, और इनपुट को आपके प्रोग्राम / फ़ंक्शन को आपूर्ति किए जाने से पहले नमूनों की तुलना में किसी अन्य तरीके से सॉर्ट नहीं किया जाना चाहिए। हमें बताएं कि आपके समाधान किस इनपुट प्रारूप का उपयोग करते हैं (इनपुट में हेक्साडेसिमल मानों के अलावा कोई अन्य जानकारी नहीं हो सकती है)।

  10. एक आंतरिक ब्लॉक आकार खोखला हो सकता है। छेद ब्लैंकस्पेस वर्णों का होना चाहिए जो कि रिक्त स्थान की दीवार के रूप में गिना जाता है, जिसका अर्थ है कि खोखले खोखले ब्लॉक आकार में छेद 1 वर्णों से अधिक चौड़ा नहीं हो सकता है।

वैध खोखले आकार के तीन उदाहरण:

aaa
a aaa
aaa

999
9 9
999
9

ffffff
f   ff
ffffff

अमान्य खोखले आकार का एक उदाहरण:

ffffff
f   f
f   f
fffff

मुझे लगता है कि सभी इनपुट संयोजन उपरोक्त नियमों के अनुसार "हल" करना संभव नहीं है, इसके लिए मैं 10 नमूना इनपुट सूचीबद्ध करता हूं जो आपके प्रोग्राम को "हल" करने में सक्षम होना चाहिए (सभी सत्यापित है)

 1. 464fa6 (same as the first sample)
 2. 35bf12 (second example input seen above)
 3. 111126
 4. ff7fff
 5. 565656
 6. abcdef
 7. 1357bd
 8. 8c6a42
 9. ab7845
10. 349a67

आपका कार्यक्रम 10 नमूना आदानों में से किसी को भी प्रतिध्वनि समय में हल करने में सक्षम होना चाहिए एक मानक डेस्कटॉप कंप्यूटर पर 1 घंटे के भीतर गूंजने योग्य समय का अनुवाद करें। जैसे कहते हैं: एक संदर्भ के लिए 3 Ghz दोहरे कोर, 4 जीबी मेमोरी।

यह कोड गोल्फ है, सबसे छोटा समाधान जीतता है। समाधान पूरी तरह से काम करने वाला कार्यक्रम या एक कार्य हो सकता है


"कनेक्टिंग" के बारे में नियम 7 का क्या मतलब है? क्या यह नियम 5 की कमी है (5) जो कि (मेरे वाक्यांश) 2x2 रिक्त वर्ग के अस्तित्व को प्रतिबंधित करता है?
पीटर टेलर

मुझे कुछ प्रतिबंधों के बारे में खेद है, लेकिन नियम 7 नियम 6 के प्रतिबंध का अधिक है जहां यह कहा गया है कि आकार एक समान होना चाहिए। दूसरे शब्दों में नियम 7 कहता है कि एक एकल आकार को 2 अलग-अलग छोटे आकार में विभाजित नहीं किया जा सकता है।
प्लेसेन

6
मेरा मतलबी होने का कोई इरादा नहीं है, लेकिन यह समस्या किसी भी तरह से पेचीदा, दिलचस्प या किसी भी तरह की मनभावन विशेषता दिखाने से नहीं है। यह सिर्फ एक अमूर्त चुनौती है और मैं यह नहीं देखता कि किसी के पास सभी नियमों को पढ़ने के लिए आवश्यक धैर्य क्यों होगा, इसे हल करने के लिए कुछ भी कहने की जरूरत नहीं है। हालांकि अपने अगले एक के साथ शुभकामनाएँ!
बोगडान अलेक्जेंड्रू

1
स्पष्टता: व्हॉट्सएप किसी भी आकार को तब तक बना सकता है जब तक वह ब्लॉकों को अलग करता है और इसमें कोई 2x2 ब्लॉक नहीं होता है और बाहरी किनारे पर लगातार दो व्हाट्सएप ब्लॉक नहीं होते हैं?
जॉन ड्वोरक

2
यह प्रश्न वास्तव में मुश्किल है (या शायद मैं एक गरीब समस्या हल करने वाला हूं) ... क्या आपके पास खुद का हल है, प्लार्सन? वैसे भी, मुझे लगता है कि यह व्हाट्सएप आवश्यकताओं को छोड़ने और इसे एक कोड-चुनौती बनाने के लिए अधिक दिलचस्प होगा, जहां स्कोर चरित्र की गिनती और ब्लॉक की ऊंचाई दोनों पर निर्भर करता है (इस प्रकार इसे बनाने के बिना इसे पैक करना बहुत फायदेमंद है। यह एक कठिन आवश्यकता है)।
फायरफली

जवाबों:


1

हास्केल, 156

खैर, यह नियमों को थोड़ा बढ़ाता है। मेरे पास लाइनब्रेक को छोड़कर कोई भी रिक्त स्थान की दीवार नहीं है, इसलिए मेरी सभी दीवारों की लंबाई 1 है।

import Data.List
r=replicate
main=getLine>>=putStrLn.concatMap(\b->unlines$s(head$elemIndices b"0123456789abcdef")b)
s n c|n<9=[r n c,""]|True=r 8 c:s(n-8)c

464fa6 के लिए आउटपुट:

4444

666666

4444

ffffffff
fffffff

aaaaaaaa
aa

666666

बहुत, बहुत करीब :) लेकिन नियम 4 को पूरा नहीं किया गया है, अपने आउटपुट की एक काल्पनिक आयत बनाते हुए, आपके पास सबसे दाहिने किनारे पर एक पंक्ति में 1 से अधिक संरेखित व्हाट्सएप है।
प्लेसेन

1

BrainF * ck - 134 (newline intr

>>+[++++++++++>,----------]>++++++[<+++++>-]<++[<]<++++++[>+++++<-]>++>-
>..<<.>>>..<<<.>>>>..<<<.<........>.>>>>..>>>.<<..>>.<..[<]>>.

मुझे लगता है कि यह सरल उत्तर है

स्टेक को 6 हेक्साडेसिमल वर्णों के माध्यम से लिया गया, उसके बाद सबमिट करने के लिए एक नई पंक्ति।

संपादित करें: यह नियम 6 के कारण विफल हो जाता है, जो मुझे अब तक पूरी तरह से महसूस नहीं हुआ: /

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.