जब गैर-पालिंड्रोमिक पॉलीग्लॉट बोगल पर काम कर रहा था, तो मैंने केवल दो तारों के साथ, बोगल बोर्ड पर कोड को कुशलतापूर्वक पैक करने के लिए काफी थकाऊ पाया। लेकिन हम प्रोग्रामर हैं, है ना? हम जानते हैं कि चीजों को कैसे स्वचालित करना है।
स्ट्रिंग्स की एक सूची को देखते हुए, आप एक बोगल बोर्ड उत्पन्न करते हैं, जिस पर उन स्ट्रिंग्स में से प्रत्येक को (दूसरों के स्वतंत्र रूप से) पाया जा सकता है। चुनौती यह है कि बोगल बोर्ड को यथासंभव छोटा बनाया जाए। जैसा कि यह (उम्मीद है) एक कठिन काम है, यह एक कोड-चुनौती है : इसमें इष्टतमता की कोई आवश्यकता नहीं है - चुनौती यह है कि आप इसे जितना चाहें उतना कर सकते हैं।
नियम
- बोगल बोर्ड आयताकार होगा और इसमें केवल ऊपरी केस अक्षर होंगे। इसलिए, इनपुट स्ट्रिंग्स में केवल ऊपरी केस अक्षर भी होंगे।
- सामान्य बोगल नियम लागू होते हैं: एक स्ट्रिंग बोर्ड का हिस्सा होता है, यदि कहीं भी शुरू होता है, तो आप बार-बार आसन्न वर्णों (क्षैतिज, लंबवत या तिरछे) पर जाकर स्ट्रिंग पा सकते हैं। एकल स्ट्रिंग बनाने के लिए, आप एक से अधिक बार बोर्ड की किसी भी सेल का उपयोग नहीं कर सकते। हालाँकि, विभिन्न स्ट्रिंग्स के बीच वर्णों का पुन: उपयोग किया जा सकता है।
- आपको परीक्षण डेटा को संसाधित करने के लिए 30 मिनट का समय मिला है, और आपके कोड को 4 जीबी से अधिक मेमोरी का उपयोग नहीं करना चाहिए। मैं मेमोरी सीमा पर थोड़ा-सा लेवे दे दूंगा, लेकिन यदि आपका प्रोग्राम लगातार 4 जीबी से अधिक या स्पाइक्स का काफी अधिक उपयोग करता है, तो मैं (अस्थायी रूप से) इसे अयोग्य घोषित कर दूंगा।
- मैं अपनी मशीन पर सभी सबमिशन का परीक्षण करूंगा, जो कि विंडोज 8 चल रहा है। मेरे पास एक उबंटू वीएम है, लेकिन अगर मुझे इस पर परीक्षण करना है कि आप 30 मिनट का अधिक से अधिक उपयोग नहीं कर पाएंगे। कृपया अपनी चुनी हुई भाषा के लिए एक नि: शुल्क दुभाषिया / संकलक का लिंक शामिल करें, साथ ही अपने कोड को कैसे संकलित / चलाने के लिए निर्देश दें।
- नीचे दिए गए परीक्षण डेटा के लिए आपका स्कोर बोगल बोर्ड के आकार का होगा (नए अंक की गिनती नहीं)। एक टाई के मामले में (उदाहरण के लिए, क्योंकि कई लोग एक इष्टतम समाधान का उत्पादन करने में कामयाब रहे), विजेता वह सबमिशन होगा जो इस इष्टतम समाधान को तेजी से पैदा करता है।
- आपको विशेष रूप से परीक्षण डेटा की ओर अपने कोड का अनुकूलन नहीं करना चाहिए। अगर मुझे ऐसा करने पर किसी पर संदेह है, तो मैं नए परीक्षण डेटा उत्पन्न करने का अधिकार सुरक्षित रखता हूं।
उदाहरण
तार दिए
FOO
BAR
BOOM
एक बार तुच्छ रूप से उन्हें एक 4x3 बोगल बोर्ड में रखा जा सकता है:
FOOX
BARX
BOOM
इस तथ्य का उपयोग करके कि तार सीधे नहीं होने चाहिए, हम इसे 5x2 पर संपीड़ित कर सकते हैं:
BORFO
OMABO
लेकिन हम विभिन्न स्ट्रिंग्स के बीच वर्णों का पुन: उपयोग करके इसे और भी छोटा बना सकते हैं, और स्ट्रिंग्स को 4x2 में फिट कर सकते हैं:
FOOM
BARX
अब B
दोनों के लिए प्रयोग किया जाता है BOOM
और BAR
, और OO
दोनों के लिए प्रयोग किया जाता है BOOM
और FOO
।
परीक्षण डेटा
आपके सबमिशन का परीक्षण निम्न 50 स्ट्रिंग्स पर किया जाएगा। परीक्षण उद्देश्यों के लिए आप बस इस डेटा के छोटे उपसमुच्चय का उपयोग कर सकते हैं, जो तब और अधिक तेज़ी से चलना चाहिए। मेरा मानना है कि इस परीक्षण डेटा के लिए पूर्ण रूप से निचली सीमा 120 वर्णों वाला एक बोर्ड है, हालांकि यह आवश्यक रूप से प्राप्त करने योग्य नहीं है।
T
WP
GVI
CIHM
EGWIV
QUTYFZ
LWJVPNG
XJMJQWSW
JLPNHFDUW
SWMHBBZWUG
XVDBMDQWDEV
TIUGAVZVUECC
IWDICFWBPSPQR
MMNWFBGMEXMSPY
YIHYXGJXKOUOIZA
BZSANEJNJWWNUJLJ
XTRMGOVPHVZYLLKKG
FLXFVVHNTWLMRRQYFQ
VZKJRAFQIYSBSXORTSH
FNQDIGCPALCHVLHDNZAV
GEAZYFSBSWCETXFKMSWLG
KWIZCEHVBDHEBGDGCJHOID
SKMQPHJAPDQKKHGTIPJCLMH
ZSFQDNYHALSUVWESQVVEUIQC
HXHBESUFCCECHNSTQGDUZPQRB
DSLXVHMOMLUXVHCNOJCBBRPVYB
DVTXKAOYYYRBVAVPSUAOYHIPPWN
PJAIYAWHMTNHTQDZDERPZYQEMLBZ
SYNSHJNOIWESMKWTBIANYUAUNRZOS
WADGUKIHUUFVRVUIBFUXQIOLAWIXAU
LGLXUFIXBEPSOFCKIAHXSHVKZPCXVPI
LIUYFHITTUYKDVQOZPNGZLWOZSRJTCTZ
IZDFTFFPNEBIYGVNTZHINICBXBXLBNBAL
BSKQNTPVUAVBXZGHVZCOUCRGCYISGFGYAS
DPGYYCIKDGCETXQOZGEQQLFQWACMVDTRYAT
RQDNIPGUHRYDRVHIPJLOWKBXMIBFAWCJGFMC
PFKOAGEQLXCMISSVEARWAPVYMRDCLSLPJOMQQ
EQPCNHQPTWABPFBVBXHQTFYELPNMNCWVKDDKGR
RAHTJMGIQJOJVWJBIHVRLJYVCSQJCKMEZRGRJMU
SZBJBPQYVYKDHAJHZMHBEWQEAQQKIEYCFACNLJBC
ANVDUCVXBPIZVRAXEBFEJOHSYKEKBIJELPIWEYXKH
DJUNPRLTISBFMGBEQNXSNUSOGDJNKESVKGAAMTIVXK
TZPUHDSHZFEURBNZTFBKXCDPYRELIAFMUWDIQTYWXGU
FJIKJROQSFSZUCGOOFJIEHBZREEUUSZWOLYFPCYHUSMR
TPMHJEAWVAJOCSDOPMQMHKRESBQSTRBXESYGCDVKLFOVS
ABJCCDJYMYDCYPZSGPGIAIKZQBYTZFDWYUZQBOESDSDGOY
IIHKTVPJNJDBCBOHCIYOPBKOVVKGNAKBDKEEKYIPRPHZOMF
IABGEPCSPNSMLVJBSGLRYNFSSYIALHWWAINTAVZAGJRVMDPW
GFMFVEFYJQJASVRIBLULUEHPMZPEXJMHIEMGJRMBLQLBDGTWT
YPWHLCVHQAVKVGHMLSOMPRERNHVYBECGCUUWTXNQBBTCMVTOVA
सत्यापनकर्ता
आप यह सत्यापित करने के लिए निम्न स्टैक स्निपेट का उपयोग कर सकते हैं कि बोगल बोर्ड में दी गई सूची में सभी तार हैं या नहीं। मैंने यहाँ पर edc65 के उत्तर से बोगल खोज कोड को पोर्ट किया । मुझे पता है कि कुछ भी छोटी गाड़ी लगती है।