मोडोरिया में मोड 7


12

एक सरल Manufactoria चुनौती। इनपुट मॉड्यूल की गणना करें 7. इनपुट बड़े-एंडियन बाइनरी (नीला = 1, लाल = 0) में होगा। आउटपुट एक ही प्रारूप में होना चाहिए।

परीक्षण के मामले प्रदान किए गए। सबसे छोटा हिस्सा गिनती जीतता है।

http://pleasingfungus.com/Manufactoria/?ctm=Mod7;Input:_binary_number_big_endian._Output:_that_binary_number_mod_7;bbb:|brrr:b|brrrr:br|bb:bb|bbrrb:brr|brrrrb:brb|bbrb:bbr; 13; 3; 1 ;

(यदि इनपुट मॉड 7 0 है, तो आउटपुट कुछ भी नहीं।)


इस मामले में "कोड-गोल्फ" का अर्थ है "सबसे कम हिस्से"?
जॉन ड्वोरक

चूंकि मैंने वेतन वृद्धि की समस्या को हल नहीं किया है, इसलिए मुझे नहीं पता कि इसे कैसे हल किया जाए। फनटोरिया मजेदार है।
जस्टिन

@JDDvorak: हाँ।
कीथ रान्डेल

@KeithRandall हमने कभी भी कोड-गोल्फ को टेकोरिया के साथ टैग नहीं किया । हमें या तो यहां टैग को हटा देना चाहिए या इसे अन्य प्रश्नों में जोड़ना चाहिए।
हावर्ड

@ हावर्ड: मैं कहूंगा कि इसे जोड़ें (या सबसे तेज़-कोड या व्यस्त-बीवर या कोड-चैलेंज या जो भी सबसे अच्छा स्कोरिंग का वर्णन करता है), और कारख़ाना को एक सरल भाषा टैग होने दें
इल्मरी करोनें

जवाबों:


5

### मैन्यूफोरिया, 85 भागों रखा

एल्गोरिथ्म काफी सीधा है: एक राज्य मशीन (आठ शाखाओं के साथ सबसे बड़ा हिस्सा - एक का उपयोग करके राज्यों में से एक को लॉगिक उद्देश्यों के लिए दोहराया जाता है) का उपयोग कर गणना करें, फिर परिणामों को एन्कोड करें और इकट्ठा करें। चूंकि लगभग हर परिणाम में एक अंक होता है, इसलिए भागों की मात्रा को कम करने के लिए एक अतिरिक्त संपीड़न कदम लगाया जाता है।

YEd में डिज़ाइन किया गया है, फिर Manufactoria में स्थानांतरित किया गया है।

मेरी राय में, बहुत से कन्वेयर बेल्ट का उपयोग करता है।


5

५। ४३ भाग

43-भाग mod7 पर स्क्रीनशॉट, Manufactoria में कम करते हैं

http://pleasingfungus.com/Manufactoria/?lvl=33&code=c16:9f0;q15:9f3;q14:9f3;q13:9f3;c12:9f3;c16:10f1;r15:10f3;r14:10f3;b13:10f3 ; Q12: 10f4; P11: 10f4; C16: 11f1; i15: 11f7; प्रश्न 14: 11f7; प्रश्न 13: 11f7; Q12: 11f7; C11: 11f2; R15: 12f3; b14: 12f3; C12: 12f3; C15: 13f0; C14 : 13f0; C13: 13f0; R13: 12f3; y10: 3f3; C10: 4f2; g10: 5f1; q10: 6f4; Y11: 3f0; प्रश्न 11: 4f6; R11: 5f3; P11: 6f4; B11: 7f1; I12: 4f7 ; C12: 5f3; Q12: 6f0; G12: 2f3; C12: 3f3; p13: 4f6; Y13: 3f0; C13: 5f0; C12: 7f3; बी 12: 8f3; और CTM = Mod7; इनपुट: _binary_number_big_endian._Output: _that_binary_number_mod_7; bbb : | brrr: b | brrrr: br | bb: bb | bbrrb: brr। brrrrb: brb | bbrb: bbr; 13; 3; 1 ;

कीथ रान्डेल ने सबसे पहले इनपुट को एकरी में बदलने का विचार बहुत अच्छा था, इसलिए मैंने इसे चुरा लिया। ;-) आसानी से, मैंने अभी कुछ समय बाइनरी-टू-एकी कन्वर्टर्स के रूप में निर्मित करने में बिताया ।

यह डिजाइन अब उस बिंदु पर है जहां सिर्फ ऊपर से नीचे तक रोबोट को प्राप्त करने की आवश्यकता होती है अन्यथा बेकार के अतिरिक्त कन्वेयर की आवश्यकता होती है। आगे के किसी भी महत्वपूर्ण हिस्से में कटौती शायद लेआउट को लम्बा और संकरा करने के लिए फिर से डिज़ाइन करने से आएगी।

(* उस चुनौती के लिए आवश्यक है) डिजाइन एक 7 × 7 बोर्ड पर फिट होने के लिए, और बी) एकांतर आउटपुट लाल मार्करों में होना चाहिए। यदि आप उपरोक्त मशीन के बाइनरी-टू-अनरीरी कन्वर्टर भाग को देखते हैं, तो आप ध्यान देंगे कि एक या दो अतिरिक्त भागों के साथ, यह आसानी से किसी भी आवश्यकता को पूरा कर सकता है, लेकिन अफसोस, दोनों नहीं।)


यहां पिछला 58-भाग संस्करण है:

राज्यों में लेबल वाले 58-भाग मॉड 7 के निर्माता में मि

http://pleasingfungus.com/Manufactoria/?lvl=32&code=g12:2f3;q13:13f5;c14:13f0;c15:12f3;c9:6f2;c9:7f1;c9:8f1;c9:9f1;c10:4f3 ; C10: 5f3; i10: 6f5; C10: 7f2; C10: 9f0; B11: 3f2; P11: 4f1; C11: 5f1; P11: 6f2; P11: 7f2; C11: 8f3; P11: 9f3; B11: 10f2; C12 : 3f2; C12: 4f2; C12: 5f0; r12: 6f3; C12: 7f3; I12: 8f1; I12: 9f5; y12: 10f3; C13: 3f2; C13: 4f3; i13: 5f1; C13: 6f3; C13: 7f2 ; i13: 8f0; C13: 9f1; C14: 3f3; C14: 4f2; p14: 5f5; C14: 6F1; p14: 7f6; p14: 8f7; R14: 9f3; C15: 4f3; प्रश्न 15: 5f0; C15: 6f3; C15 : 7f3; i15: 8f6; C15: 9f3; प्रश्न 15: 10f7; C15: 11f3; r12: 12f2; p13: 12f7; b14: 12f0; b14: 11f3; बी 12: 11f3; Y14: 10f3; y15: 13f0; और CTM = Mod7 ; इनपुट: _binary_number_big_endian._Output: _that_binary_number_mod_7; bbb: | brrr: b | brrrr: br | bb: bb: bbrrb: brr: brbrrb: brb। Bbrb: bbrb; 13 ;

जैसा जन ड्वोरक के समाधान , यह भी एक 7 राज्य FSM पर आधारित है। मैंने स्क्रीनशॉट में प्रत्येक राज्य के अनुरूप गेट्स को लेबल किया है ताकि इसे पढ़ना आसान हो सके। राज्य मशीन, हालांकि, वास्तव में आसान हिस्सा है; मुश्किल हिस्सा गेट्स की न्यूनतम संख्या के साथ अंतिम आउटपुट उत्पन्न कर रहा है।

एक तरकीब जो मुझे उपयोगी लगी, वह थी फाइनल कॉपी लूप की जो बैरल-शिफ्ट को पीले मार्कर से अंत तक (जबकि हरे रंग की मार्कर से अलग करते हुए) लिखी गई है: इसने मुझे उच्च-क्रम आउटपुट बिट्स में पुनरावृत्ति का उपयोग करने की अनुमति दी आउटपुट उत्पन्न करने के रूप में:

0:  Y   ->
1: BY   ->   B
2:  YBR ->  BR 
3:  YBB ->  BB
4: RYBR -> BRR
5: BYBR -> BRB
6: RYBB -> BBR

यह मुझे आउटपुट आउटपुट 2, 4 और 5 (जो सभी के साथ शुरू होता है BR) और 3 और 6 (जो शुरू होता है BB) के लिए आउटपुट पथ को संयोजित करने देता है ।


मुझे आपके डिज़ाइन में कोई दोष नहीं मिला है। अंतरिक्ष की बचत पर अच्छा काम।
जॉन डेवोरक

Ps। यहां राज्य-मशीन आधारित कार्यान्वयन के लिए एक अच्छा परीक्षण इस प्रकार है: संख्या 8890 = BRRRBRBRBBBRBR को आउटपुट 0 देना चाहिए, हर राज्य में दो बार (और राज्य 0 एक बार और अंत में) का दौरा करना चाहिए और एक बार हर संभव राज्य संक्रमण लेना चाहिए।
इल्मरी करोनें

2

60 भागों

मेरा समाधान काफी अलग है। यह बाइनरी को पहले यूनरी में परिवर्तित करता है, फिर मॉड 7 करता है। मैं इल्मरी को काफी हरा नहीं सकता।

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


तुम्हें पता है, आप शायद अगर आप उस कनवर्टर को अनुकूलित कर सकते हैं ।
इल्मरी करोनें

0

मुझे वास्तव में पता नहीं था कि मैं क्या कर रहा हूं, लेकिन यह काम करता है और मैं विजेता हो सकता हूं (यदि केवल परीक्षण-मामले पर्याप्त सबूत होंगे)। : डी

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

संपादित करें: इसे 2 बार अनुकूलित किया गया, अब थोड़ा छोटा है। (निकाला गया बकवास)


वास्तव में मुझे नहीं पता कि यह बड़ी संख्या (या परीक्षण मामलों की तुलना में अलग) के साथ काम करेगा।
लियो पफ्लग

1
-1 केवल परीक्षण मामलों के लिए काम करता है। यदि संख्या के साथ शुरू होता है 111, तो यह हमेशा 7 से विभाज्य होने के रूप में रिपोर्ट किया जाएगा। यह बस सच नहीं है।
जॉन ड्वोरक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.