प्रिमोरिया में प्राइमलिटी टेस्टिंग


13

पृष्ठभूमि

Manufactoria प्रोग्रामिंग के बारे में एक गेम है। कार्यों को पूरा करने के लिए खिलाड़ी को दो-आयामी प्रोग्रामिंग भाषा के रूप का उपयोग करना चाहिए। यदि आपने इसके बारे में कभी नहीं सुना है, तो सीखने का सबसे आसान तरीका खेल के पहले कुछ स्तरों को आज़माना है।

चुनौती

आपकी चुनौती एक प्रोग्राम बनाना है जो किसी संख्या की मौलिकता का परीक्षण करता है।

इनपुट कतार में एन ब्लू मार्करों की एक श्रृंखला होगी। यदि एन प्रमुख है, तो आपके कार्यक्रम को इसे स्वीकार करना चाहिए (रोबोट को खत्म करने के लिए स्थानांतरित करें)। यदि एन समग्र है, तो आपके कार्यक्रम को इसे अस्वीकार कर देना चाहिए (इसे कहीं फर्श पर छोड़ दें)।

प्रस्तुत विकल्प

चूँकि यह सामान्य रूप से मिलीफोरिया चुनौती की तुलना में अधिक जटिल चुनौती है, इसलिए मैंने आपके उत्तर प्रस्तुत करने के और तरीकों की अनुमति देने का निर्णय लिया है।

वनीला

मैंने प्रस्तुतियाँ बनाने और परीक्षण करने के लिए एक 13x13 कस्टम स्तर बनाया है। कस्टम परीक्षण स्तर निम्नानुसार है।

13x13 कस्टम स्तर

खेल केवल एक कस्टम स्तर पर 8 परीक्षण मामलों की अनुमति देता है, लेकिन आपकी रचना सैद्धांतिक रूप से किसी भी प्राकृतिक संख्या एन को संभालने में सक्षम होनी चाहिए, केवल उपलब्ध स्मृति द्वारा सीमित। सूचना के प्रयोजनों के लिए, कस्टम स्तर में दिए गए परीक्षण मामले निम्नानुसार हैं:

1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject

विस्तारित ग्रिड

कुछ उपयोगकर्ता 13x13 ग्रिड से अधिक कमरे चाहते हैं। यहां इन-गेम 15x15 कस्टम स्तर का लिंक दिया गया है, जो URL में एक संख्या को बदलकर बनाया गया है:

15x15 कस्टम स्तर

अफसोस की बात है, बड़े कस्टम स्तर काम नहीं करते हैं, क्योंकि अतिरिक्त कोशिकाएं दुर्गम हैं।

द मेपरोरिया एसोलंग

एफ़सीआईआई-आधारित भाषा में मेन्टेनोरिया का एक रूपांतर हुआ है। यदि आप अपनी रचना को डिजाइन / परीक्षण करने का एक अलग तरीका चाहते हैं, या यदि आप गेम बोर्ड पर अपने अंतिम समाधान को फिट करने में असमर्थ हैं, तो आप इस एसोलैंग का उपयोग कर सकते हैं। आप इस एसोलंग के बारे में जानकारी यहाँ पा सकते हैं:

मेफोरिया एस्कोलंग

एसोलैंग और वास्तविक गेम के बीच कुछ विसंगतियां हैं। उदाहरण के लिए, कन्वेयर क्रॉसिंग को अलग तरीके से हैंडल किया जाता है। इन विसंगतियों का फायदा उठाने से बचने की कोशिश करें।

टेस्ट करने का एक तेज़ तरीका

खेल बहुत धीमा है जब यह उन कार्यक्रमों की बात आती है जो पूरा करने के लिए कई हजारों कदम उठाते हैं। मेरे प्रूफ-ऑफ-कॉन्सेप्ट सॉल्यूशन ने 15.42 को अस्वीकार करने के लिए 28042 कदम उठाए। यहां तक ​​कि 50x स्पीडअप इन-गेम, जो कि बहुत लंबा लगता है।

मुझे यह बहुत उपयोगी वेबसाइट मिली । बस अपने उत्तर के लिंक को कॉपी-पेस्ट करें, और आप विशिष्ट इनपुट के साथ अपने उत्तर का परीक्षण कर सकते हैं। 28042-चरण की प्रक्रिया एक सेकंड के तहत हुई।

ध्यान देने वाली एक बात यह है कि यह अक्सर कुछ कहेगा जैसे "गलत तरीके से स्वीकार किए जाते हैं" भले ही आपकी मशीन ने ठीक से काम किया हो। ऐसा इसलिए है क्योंकि वेबपेज केवल परीक्षण मामलों को जानता है। उदाहरण के लिए, यह कहेंगे कि मेरा समाधान नंबर 3 को "गलत तरीके से स्वीकार किया गया", हालांकि मेरी मशीन वास्तव में सही थी।

कैसे जीतें

स्कोरिंग मानदंड भागों की संख्या (कब्जा की गई कोशिकाएं) है। यह कोड गोल्फ है, इसलिए सबसे कम भागों के साथ सबमिशन जीत जाता है।

रुचि रखने वालों के लिए, मेरे बेंचमार्क समाधान में 96 भाग हैं और यह 13x13 ग्रिड पर फिट बैठता है। एक बेहतर एल्गोरिथ्म खोजने से मुझे बहुत सुधार हो सकता है, क्योंकि मुझे पता है कि मैंने एक उप-इष्टतम एल्गोरिथ्म का उपयोग किया है।

जवाबों:


10

53 भाग - 11x11 ग्रिड

मैंने सिर्फ 2 दिन पहले मेफोरिया खेलना सीखा, इसलिए यह शायद बहुत गोल्फ-अनुकूलित नहीं है, लेकिन कम से कम यह समस्या हल करता है। यह दोहराया घटाव के माध्यम से, निश्चित रूप से परीक्षण विभाजन को लागू करता है। 2 से N-1 तक के सभी विभाजकों की जाँच की जाती है। समय जटिलता ओ होना चाहिए (एन ^ 3), मेरा मानना ​​है।

53-टुकड़ा समाधान

समाधान लिंक

मैं एक कन्वेयर बेल्ट का उपयोग करने के लिए बहुत निराश था :)

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