बाइन में एक बाइनरी काउंटर लिखें


10

दो कोड टुकड़े लिखें, जिसे हम s_zero और s_one कहेंगे।

कार्यक्रम (l, n) बाइनरी में n_ के अंक के साथ s_zero और s_one की l प्रतियों के होते हैं, जो बाईं ओर s_zero के साथ गद्देदार होते हैं।

उदाहरण के लिए, यदि s_zero = fooऔर s_one = barतो
Program (4, 0) = foofoofoofoo
Program (4, 1) = foofoofoobar
Program (4, 2) = foofoobarfoo
आदि।

प्रोग्राम (l, n) को स्टैंडर्ड आउट करने के लिए प्रोग्राम (l, (n + 1) mod (2 ^ l) के स्रोत को प्रिंट करना होगा। ऊपर दिए गए उदाहरण में, निष्पादित होने पर foobarfoofooप्रिंट करना होगा foobarfoobar

आपका स्कोर अंशों की लंबाई का योग है s_zero और s_one


डुप्लिकेट टू कोडगॉल्फ.स्टैकएक्सचेंज.com / questions / 35974/… - 2 अलग-अलग कोड ब्लॉक के साथ क्वीनिंग प्रोग्राम द्वारा की गई गणना।
फेर्सुम

क्या प्रोग्राम अपना स्वयं का सोर्स कोड पढ़ सकता है?
दरवाज़े

2
@ फर्सम I असहमत। यह एक बहुत आसान है, विशेष रूप से, आपको लाइन ब्रेक का निर्धारण करने में सक्षम होने की आवश्यकता नहीं है। इसके अलावा, मुझे लगता है कि कार्य में फर्क पड़ता है, अन्यथा हर सामान्यीकृत क्वीन चुनौती बुनियादी क्वीन चुनौती का एक हिस्सा होगी।
मार्टिन एंडर

सरल कार्य का लाभ यह है कि यह अब तक देखे गए चौंकाने वाले छोटे उत्तरों को बनाने के लिए प्रतिस्पर्धा को प्रोत्साहित करता है- मुझे उम्मीद है कि इस चुनौती को अलग-अलग तरह से सही ठहराता है!
क्वाडमास्टरएक्सएलआईआई

1
शायद यह ध्यान देने योग्य है कि s_zero और s_one को अलग होना चाहिए। अन्यथा मेरे पास 2 * n स्कोर के साथ कई समाधान हैं।
यादृच्छिक

जवाबों:


6

CJam, 29 + 29 = 58 बाइट्स

0 कोड:

0{"_~"]]z(3\+2b(2b2>a\+z~[}_~

1 कोड:

1{"_~"]]z(3\+2b(2b2>a\+z~[}_~

व्याख्या

0                       " Push the current bit. ";
{"_~"                   " The basic quine structure. ";
    ]                   " Make an array of the current bit, the function and _~.
                          That is the code fragment itself. ";
    ]                   " Make an array of all code fragments in the stack. ";
    z(                  " Extract the array of the bits. ";
    3\+2b(2b2>          " Convert from base 2, decrease by one and convert back,
                          keeping the length. ";
    a\+z                " Put the bits back to the original position. ";
    ~                   " Dump the array of code fragments back into the stack. ";
    [                   " Mark the beginning position of the array of the next code fragment. ";
}_~

2
हर एक समय ...
ऑप्टिमाइज़र

3

CJam, 47 + 47 = 94 बाइट्स

0 कोड:

{`"_~"+]:+T2*0+:T)\AsSerS/_,(@2Y$#+2bU@->]zs}_~

1 कोड:

{`"_~"+]:+T2*1+:T)\AsSerS/_,(@2Y$#+2bU@->]zs}_~

बहानेबाज़ी करना।

मुझे यकीन है कि मैं अभी भी वहाँ कुछ बाइट्स दाढ़ी कर सकता हूँ। एक बार जब मैं यह तय कर लूंगा कि मैं इसे किसी भी तरह से गोल्फ के लिए परेशान नहीं कर सकता हूं, तो मैं एक स्पष्टीकरण जोड़ूंगा।

इसका परीक्षण यहां करें।



1

गोल्फस्क्रिप्ट, 37 + 37 = 74 बाइट्स

0{`".~"+:q;]-2%1\{1$^.@&q@}%\;-1%~}.~
1{`".~"+:q;]-2%1\{1$^.@&q@}%\;-1%~}.~

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

मेरा समाधान सीधे किसी भी मौजूदा समाधान पर आधारित नहीं है (और, वास्तव में, मैंने उन्हें विस्तार से जांच नहीं की है, क्योंकि मैं अभी भी सीजेएम को बहुत अच्छी तरह से नहीं पढ़ता हूं), लेकिन वे सभी एक ही मूल क्वीन संरचना के वेरिएंट ( {".~"}.~में) गोल्फस्क्रिप्ट, {"_~"}_~सीजेएम में)। यह वास्तव में बहुत आश्चर्य की बात नहीं है, क्योंकि यह इन भाषाओं में मनमाने ढंग से पेलोड के साथ क्वीन लिखने के सबसे कुशल तरीकों में से एक लगता है।

इस कोड के कई हिस्से हैं जो मुझे वास्तव में पसंद नहीं हैं, और मुझे संदेह है कि इसे आगे बढ़ाना संभव हो सकता है, लेकिन मैंने इस पर बहुत अधिक समय बिताया है।

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