मेन्टेनोरिया: सबसे धीमी गति से संभव स्वीकार कार्यक्रम उत्पन्न करते हैं


18

एक Manufactoria प्रोग्राम लिखें जो खाली इनपुट टेप को स्वीकार करेगा। लेकिन यह जल्दी मत करो! मेरा मतलब है, कार्यक्रम को जल्दी से लिखें, लेकिन इसे जल्दी से न चलने दें। कार्यक्रम धीमा, बेहतर, जब तक यह अंततः समाप्त हो जाता है। नीचे दिया गया उदाहरण कार्यक्रम 3:51 (सिम्युलेटर द्वारा रिपोर्ट किया गया "कुल समय" है।

यहाँ छवि विवरण दर्ज करें

http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12:5f3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 ; r9: 7f2; C10: 7f2; C11: 7f2; C12: 7f3; Q12: 8f3; Y13: 8f2; Y14: 8f2; y15: 8f1; y15: 7f0; Y14: 7f0; Y13: 7f0; G12: 6f3; और CTM = धीमहि_आदर्श!? जनरेट_थे

आपका कार्यक्रम खाली टेप के साथ शुरू होता है। यह एक बिट के आसपास कामचोर करना चाहिए, लेकिन अंततः आउटपुट वर्ग तक पहुंच सकता है। आप चाहें तो टेप पर डेटा छोड़ सकते हैं। 7x7 Manufactoria बोर्ड की जीत पर सबसे धीमा कार्यक्रम!

आपका दाहिना तीर कुंजी आपका मित्र है, यह सिम्युलेटर को गति देता है।

सिम्युलेटर दुर्घटनाग्रस्त करने के लिए बोनस अंक!


तो खाली टेप के अलावा इनपुट को स्वीकार / अस्वीकार करने के लिए कोई आवश्यकता नहीं है?
अस्थिरता

@ अस्थिरता: सही है।
कीथ रान्डेल

जब तक यह चुनौती के अपेक्षित आउटपुट से मेल नहीं खाती है, तब तक, सिम्युलेटर चल रहे समय की रिपोर्ट नहीं करेगा, जब तक कि टेप खाली न हो। (सौभाग्य से बहुत अधिक अतिरिक्त स्थान की आवश्यकता के बिना अंत में टेप को मिटाना मेरे लिए आसान था।)
ब्रेडबॉक्स

जवाबों:


22

~ 10 23 पुनरावृत्तियों ~ 10 15 पुनरावृत्तियों ~ 10 8 पुनरावृत्तियों

मेफोरिया सेटअप

http://pleasingfungus.com/Manufactoria/?lvl=32&code=g9:7f2;b12:8f2;p13:8f5;p11:8f3;r14:8f0;q11:10f3;q13:7f1;y13:9f1;r10:10f1 ; C12: 9f2; C9: 9f2; I11: 9f7; i10: 9f4; C9: 8f3; i10: 8f2; C14: 9f0; C15: 9f0; C15: 8f3; C15: 7f3; C14: 7f2; G12: 7f0; C11 : 7f3; C10: 7f2; q9: 6f7; R10: 6F1; r9: 5f3; C11: 6f0; R10: 5f2; R11: 5f1; r9: 4f3; R10: 4f0; R11: 4f0; y12: 5f2; Y13: 5f2 ; y14: 5f3; y14: 6f0; y13: 6f0; y12: 6f0; & ctm = Slow_Accepter; Generate_the_slowest_possible_acing_machine ;:;; 3; 0 ; 3 ;

मशीन मूल रूप से आधार तीन में चलने वाला एक ओडोमीटर है, क्रमशः अंक 0, 1, और 2 के लिए खड़े होने के लिए लाल, नीले और पीले प्रतीकों का उपयोग करते हुए। हरे रंग के प्रतीक का उपयोग संख्या के अंत को चिह्नित करने के लिए किया जाता है। शुरुआत में, टेप को 49 लाल प्रतीकों के साथ आरंभीकृत किया जाता है। यह मशीन की शीर्ष तीन पंक्तियों में भागों द्वारा किया जाता है। नीचे की चार पंक्तियाँ एक लूप में संख्या को बढ़ाने के कार्य को संभालती हैं। प्रत्येक पुनरावृत्ति पर, बाईं ओर की दो शाखा कोशिकाएँ वर्तमान संख्या में वृद्धि को लागू करने का तरीका बताती हैं, और फिर दायीं ओर की शाखा कोशिकाएँ शेष, अप्रभावित अंकों की प्रतिलिपि बनाती हैं।

पहले मैंने मशीन के चलने के समय का अनुमान लगाने की कोशिश की थी, क्या इसे पूरा करने के लिए चलाने की अनुमति दी गई थी, लेकिन इस स्तर पर इसे पुनरावृत्तियों की संख्या से अधिक समझ में आता है। मोटे तौर पर, एक पुनरावृत्ति को पूरा करने में लगभग एक मिनट का समय लगता है - लेकिन भले ही यह एक सेकंड लगे जो केवल एक परिमाण के क्रम से चल रहे समय को कम करेगा।


4
ठीक है, मैं छोड़ देता हूँ ..
अस्थिरता

2
हार मत मानो! मुझे कोई संदेह नहीं है कि यह अभी भी सतह को खरोंच कर रहा है। उदाहरण के लिए, ओडोमीटर लॉजिक को केवल एक या दो सेल से कॉम्पैक्ट करने से रनिंग टाइम में ऑर्डर-ऑफ-मैग्नेटिटी बढ़ जाएगी।
ब्रेडबॉक्स


5
यदि यह मदद करता है, तो मैंने अक्सर गोल्फ के जवाब प्रस्तुत किए हैं जो नेता के पीछे थे, सिर्फ इसलिए कि यह एक अलग दृष्टिकोण था। इस साइट के बारे में मुझे जिन चीजों से प्यार है उनमें से एक यह है कि यह प्रतिक्रियाओं की विविधता को बनाए रखती है।
ब्रेडबॉक्स

1
@SimplyBeautifulArt एक प्रतीक के जोड़े के अंकों के होने से (जिसमें आप 16 में से 15 को 4 में से 3 के बजाय 15 का उपयोग कर सकते हैं) हो सकता है। बेशक, आप इसे लागू करने की कोशिश में छोटे बोर्ड आकार के साथ बहुत कठिनाई में दौड़ेंगे।
3

8

603: 25

ऑनलाइन टेस्ट

मैं आज फिर से कारख़ानाया सवालों के माध्यम से पढ़ रहा था, और अचानक एक विचार आया जो नाटकीय रूप से प्रक्रिया को धीमा कर देगा: केवल 50 मान और 3 बार रंग बदलने के बजाय, नया कार्यक्रम ऐसा करता है, लेकिन उसके बाद, यह घटता है। 1 से मानों की संख्या, और रंग बदलने के माध्यम से फिर से चला जाता है, जब तक कि एक खाली टेप नहीं होता है जिस समय कार्यक्रम बंद हो जाता है।

कतार एक समय में 50 से अधिक मूल्यों को संग्रहीत नहीं करेगी, इसलिए टेप पर बहुत अधिक मूल्यों को धकेलने का कोई फायदा नहीं है - वे बस सीधे दूर धक्का देते हैं। पहले की तरह, कन्वेयर बेल्ट को चलाने के लिए निर्धारित समय को अधिकतम करने का लक्ष्य है। वास्तव में, रन-टाइम में जबरदस्त वृद्धि हासिल करने के लिए कम से कम ट्वीकिंग करना था।

हालांकि अभी भी ब्रेडबॉक्स के उत्तर के पास नहीं है ।


दिलचस्प है कि हमारे समाधान समान कैसे हैं। हम दोनों ने 9x6 गुणक के साथ शुरुआत की, और हमने एक ही स्थान पर शाखा और x6 समूह रखा! तुम्हारा हालांकि अधिक सुरुचिपूर्ण है - आपने प्रत्येक सेल का उपयोग किया और एक साफ टेप के साथ समाप्त हो गया।
Igby Largeman

5

33:33

इस पर काफी समय तक काम किया ( अस्थिरता ने बार को काफी ऊंचा बना दिया), लेकिन एक बार जब मैंने 33:33 मारा, तो मुझे लगा कि इसे रोकने के लिए एक साफ-सुथरा समय था।

रणनीति बहुत ही कुंद है: मूल रूप से एक रंग के साथ टेप को भरें, फिर एक और, फिर एक और, और हमेशा प्रत्येक लिखने (या लिखने वाले समूह) के बीच जितनी संभव हो उतने कोशिकाओं को पार करने की कोशिश करें।

मुझे यकीन है कि कुछ ऐसे तरीके हैं जिनसे हम बहुत कुछ कर सकते हैं।

व्यस्त बीवर

स्तर लिंक


+1 (इसे देखने के लिए मैं क्या कर सकता हूँ?) देखूँगा (हालाँकि मैं शायद बहुत दूर नहीं जाऊँगा)
अस्थिरता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.