ऑटो साइक्लर क्वीन


11

एक क्वीन बनाओ, लेकिन एक मोड़ के साथ।

बयान

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

उदाहरण: मान लें कि आपका कोड था foobar, इसे चलाने पर यह वापस आ oobarfजाएगा जो एक और वैध कार्यक्रम होगा।

foobar -> oobarf
oobarf -> obarfo
obarfo -> barfoo
barfoo -> arfoob
arfoob -> rfooba
rfooba -> foobar

नियम

  • आपका कोड किसी और के कोड के कुछ पीढ़ी का आउटपुट नहीं होना चाहिए जो कि स्पष्ट रूप से चोरी हो
  • आपका कोड 2 वर्णों से अधिक लंबा होना चाहिए (इसलिए लघु कोड कोई मजेदार नहीं है)
  • आपके कोड में कम से कम दो अलग-अलग वर्ण होने चाहिए (उदा: +++मान्य नहीं है)

स्कोरिंग

एक के रूप में कम से कम कोड जीत चुनौती देते हैं।


2
ठीक है कि परेशान है: codegolf.meta.stackexchange.com/a/14104/9365
डोम हेस्टिंग्स

3
@DomHastings आपके पास पोस्ट करने के लिए महीने थे।
mbomb007

2
@ IQuick143 मुझे लगता है कि आपके द्वारा बताए गए कारण के लिए 2 वर्ण एक अच्छी आवश्यकता है
dylnan

5
क्या यह 'घूमने वाली रानी' के रूप में गिना जाएगा? ; पी
केविन क्रूज़सेन

3
@ mbomb007 यह संभव है कि चुनौती का एक हिस्सा है कि एक भाषा ढूँढना
IQuick 143

जवाबों:


19

बेफ़ुंज -98 (PyFunge) , 2600 बाइट्स

ab*1'3:*2+*0pnd3*:::::::::::::::1'3:*3+*0p1'3:*5+*0p1'3:*d+*0p1'3:*f+*0p1'3:*fa++*0p1'3:*fd++*0p1'4'3*f-*0p1'4'3*7-*0p1'4'3*5-*0p6:*:*4-1p6:*:*4+1p6:*:*8+1p6:*:*a+1p6:*:*8+2p6:*:*f1++2p6:*:*f3++2pn75*1-:1'3:*4+*0p6:*:*f2++2pnaa*:::::::::::::::::1'3:*6+*0p1'3:*7+*0p1'3:*f1++*0p1'3:*f2++*0p1'3:*fe++*0p1'3:*ff++*0p1'4'3*e-*0p1'4'3*d-*0p1'4'3*4-*0p1'4'3*3-*0p6:*:*3-1p6:*:*2-1p6:*:*b+1p6:*:*c+1p6:*:*9+2p6:*:*a+2p6:*:*f4++2p6:*:*f5++2pn67*::::::::::1'3:*8+*0p1'3:*a+*0p1'3:*f4++*0p1'3:*f5++*0p1'4'3*f-5-*0p1'4'3*c-*0p1'4'3*2-*0p6:*:*1-1p6:*:*d+1p6:*:*b+2p6:*:*f6++2pna5*::1'3:*9+*0p1'3:*f3++*0p6:*:*1pn68*:::::1'3:*b+*0p1'3:*f8++*0p1'4'3*f-2-*0p1'4'3*9-*0p1'4'3*1+*0p6:*:*f7++2pne8*:::::::1'3:*c+*0p1'3:*f9++*0p1'4'3*f-1-*0p1'4'3*8-*0p1'4'3*2+*0p6:*:*f2++1p6:*:*f+2p6:*:*f8++2pnf4*:1'3:*e+*0p1'4'3*3+*2pn77*::::1'3:*f6++*0p1'4'3*f-4-*0p6:*:*f1++1p6:*:*c+2p6:*:*e+2pnb4*1-::1'3:*f7++*0p6:*:*f+1p6:*:*d+2pnf4*1-::1'3:*fb++*0p6:*:*7+2p1'3:*1+*2pnf4*2-1'3:*fc++*0pn95*:::1'4'3*f-3-*0p1'4'3*a-*0p1'4'3**0p6:*:*1+1pn87*1'4'3*b-*0pnac*2-:1'4'3*6-*0p1'4'3*3+*0pnf4*3-1'4'3*1-*0pn88*2-6:*:*5-1pnc9*1-6:*:*2+1pnb4*:6:*:*3+1p6:*:*6+1pn88*6:*:*9+1pnd4*1-6:*:*e+1pnc8*2-:1'3:**1p1'3:**2pnd7*2+6:*:*4+2pn75*6:*:*6+2pn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>ab*1'3:*2+*0pnd3*:::::::::::::::1'3:*3+*0p1'3:*5+*0p1'3:*d+*0p1'3:*f+*0p1'3:*fa++*0p1'3:*fd++*0p1'4'3*f-*0p1'4'3*7-*0p1'4'3*5-*0p6:*:*4-1p6:*:*4+1p6:*:*8+1p6:*:*a+1p6:*:*8+2p6:*:*f1++2p6:*:*f3++2pn75*1-:1'3:*4+*0p6:*:*f2++2pnaa*:::::::::::::::::1'3:*6+*0p1'3:*7+*0p1'3:*f1++*0p1'3:*f2++*0p1'3:*fe++*0p1'3:*ff++*0p1'4'3*e-*0p1'4'3*d-*0p1'4'3*4-*0p1'4'3*3-*0p6:*:*3-1p6:*:*2-1p6:*:*b+1p6:*:*c+1p6:*:*9+2p6:*:*a+2p6:*:*f4++2p6:*:*f5++2pn67*::::::::::1'3:*8+*0p1'3:*a+*0p1'3:*f4++*0p1'3:*f5++*0p1'4'3*f-5-*0p1'4'3*c-*0p1'4'3*2-*0p6:*:*1-1p6:*:*d+1p6:*:*b+2p6:*:*f6++2pna5*::1'3:*9+*0p1'3:*f3++*0p6:*:*1pn68*:::::1'3:*b+*0p1'3:*f8++*0p1'4'3*f-2-*0p1'4'3*9-*0p1'4'3*1+*0p6:*:*f7++2pne8*:::::::1'3:*c+*0p1'3:*f9++*0p1'4'3*f-1-*0p1'4'3*8-*0p1'4'3*2+*0p6:*:*f2++1p6:*:*f+2p6:*:*f8++2pnf4*:1'3:*e+*0p1'4'3*3+*2pn77*::::1'3:*f6++*0p1'4'3*f-4-*0p6:*:*f1++1p6:*:*c+2p6:*:*e+2pnb4*1-::1'3:*f7++*0p6:*:*f+1p6:*:*d+2pnf4*1-::1'3:*fb++*0p6:*:*7+2p1'3:*1+*2pnf4*2-1'3:*fc++*0pn95*:::1'4'3*f-3-*0p1'4'3*a-*0p1'4'3**0p6:*:*1+1pn87*1'4'3*b-*0pnac*2-:1'4'3*6-*0p1'4'3*3+*0pnf4*3-1'4'3*1-*0pn88*2-6:*:*5-1pnc9*1-6:*:*2+1pnb4*:6:*:*3+1p6:*:*6+1pn88*6:*:*9+1pnd4*1-6:*:*e+1pnc8*2-:1'3:**1p1'3:**2pnd7*2+6:*:*4+2pn75*6:*:*6+2pn>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

इसे ऑनलाइन आज़माएं!

यह बनाना एक नर्क था।

यह कैसे काम करता है:
कार्यक्रम पुट स्टेटमेंट्स का एक समूह है जो एक प्रोग्राम बी को अपने चारों ओर असेंबल करता है जो फिर स्रोत बाइट के आधे हिस्से को दो बार स्थानांतरित करता है।
कार्यक्रम वास्तव में एक 1300 बाइट कार्यक्रम की 2 प्रतियां हैं, यह इतना है कि यह सुनिश्चित किया जाता है कि पूरे 1300 बाइट कार्यक्रम हमेशा एक पूरे के रूप में चला जाता है।

बेहतर स्पष्टीकरण:
हर Befunge-98 Quine प्रतीकों इस तरह के एक को रोकने के लिए की जरूरत है @या qऔर ,
समस्या : उन प्रतीकों में से कोई भी एक अच्छा के बाद से especialy बिंदु से शुरू होने हैं @और qतुरन्त कार्यक्रम समाप्त।
समाधान : स्रोत कोड में उन वर्णों से छुटकारा पाएं

समस्या : कैसे?
समाधान : pआवश्यक कोड को शामिल करने के लिए स्रोत कोड को संशोधित करने के लिए कमांड (पुट) का उपयोग करें जो एक बाइट द्वारा स्थानांतरित स्रोत कोड के प्रिंट को प्रिंट करेगा और जो कमांड धोखा दे रहा है उसका उपयोग करें g

समस्या : (जब ये समाप्त हो जाएँगे)
एक पुट कमांड 3 मान n x yदेता है, जो वर्ण, x-निर्देशांक, y- कोर्ड को निर्धारित करता है, लेकिन जब इन मानों का आरंभिक विभाजन आधा हो जाता है, तो यह आरंभिक स्रोत कोड में खराब वर्ण लिख सकता है, जिससे यह बेकार हो जाता है। क्विनिंग के लिए।
समाधान : (पिछले एक मैं वादा करता हूं)
स्रोत कोड की 2 प्रतियों का उपयोग करें, बाद वाला "सही एक" हो सकता है यह गलती से एक और समस्या को ठीक करता है जो कि एक पुट स्टेटमेंट (पी कमांड + स्थिर इनिशियलाइज़र) है जो आधी इच्छा में विभाजित होता है निष्पादित नहीं किया जाता है, यह प्रत्येक कथन की 2 प्रतियां होने से तय होता है। पिछली बात यह काम करने की जरूरत है कि हम पूरे स्रोत कोड को आधे से बाहर कैसे करें?

उत्तर :
एक छवि के लायक 1000 शब्द वे कहते हैं।  तब उन्होंने पीट बनाया।

यह इस बात का दृश्य प्रमाण है कि एक स्ट्रिंग बाइट की दो प्रतियाँ == एक बाइट स्थानांतरित स्ट्रिंग की दो प्रतियाँ क्यों हैं। इसका मतलब है कि हम कोड का आधा हिस्सा ले सकते हैं, बाइट शिफ्ट कर सकते हैं, फिर इसे दो बार प्रिंट कर सकते हैं (या कोड का आधा हिस्सा लें, बाइट इसे स्थानांतरित करें, प्रिंट करें, दोहराएं [वास्तव में ऐसा होता है])

यह कैसे लागू किया जाता है : मान लें कि 0123456789abcdef स्रोत है

Befunge Pseudocode:

0123456789abcv;;"123456789abcdef" < go this way <--
             >PS'0,   repeat 2x   ^

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

इससे कोड कुछ इस तरह दिखता है: कोड

स्पष्टीकरण :
ग्रीन हाइलाइट: कोड जो स्रोत में वर्ण जोड़ने का ध्यान रखता है
ग्रे लेटर्स (खराब दृश्यता क्षमा करें): कोड जो ग्रीन कोड द्वारा जोड़ा जाता
है ।
ब्लू हाइलाइट: लाल हाइलाइट देखें
ऑरेंज हाइलाइट: कोड जो कि सुनिश्चित करता है कि हमने @पीले क्षेत्र में एक (टर्मिनेट) कमांड डालकर 2 बाइट शिफ्ट की गई प्रतियां लिखी थीं ।

तीर को उम्मीद है कि यह स्पष्ट करना चाहिए कि कोड प्रवाह कैसे जाता है।

यहाँ अंतिम कठिन हिस्सा आता है: बच्चों के स्रोत कोड
कहाँ से आते हैं?

संक्षिप्त उत्तर: C # मैजिक
लॉन्ग उत्तर: C # कोड द्वारा संकलित हाथ से बनाए गए 100+ Befunge कोड स्निपेट्स। मैंने मैन्युअल रूप से लगभग 100 निरंतर इनिशियलाइज़र्स (बीफ़ुन कोड का एक टुकड़ा जो एक निश्चित संख्या को ढेर करने के लिए धक्का देता है) को हाथ से लिखा और फिर इसे 1300 बाइट बीफुंज आउटपुट में संकलित करने के लिए एक कस्टम सी # प्रोग्राम का उपयोग किया, जिसे मैंने दो बार कॉपी किया और फाइनल किया। कार्यक्रम।

क्या तुम अभी भी यहां हो? पढ़ने के लिए बहुत धन्यवाद! (या अंत तक कम से कम स्क्रॉल करना)
मुझे आशा है कि मेरे बुरे चुटकुले मजेदार थे और कष्टप्रद नहीं थे।

नोट: इस कोड में कोई भी स्टेटमेंट एग कमांड नहीं बनाता है जो धोखा होगा।

EDIT: मैंने डेवलपर टूल का उपयोग करके TIO में निम्नलिखित जावास्क्रिप्ट कोड का उपयोग करके कोड को सत्यापित किया है

setInterval(()=>{document.getElementById("code").value = 
document.getElementById("output").value; 
document.getElementById("run").click();}, 2000);

मैं वास्तव में पूर्ण स्पष्टीकरण की प्रतीक्षा कर रहा हूं, लेकिन यह काफी उपलब्धि की तरह लगता है और निश्चित रूप से इनाम के हकदार हैं!
नथानिएल

1
@Nathaniel वहाँ पूर्ण स्पष्टीकरण चला जाता है आशा है कि आप इसे पसंद करेंगे! : D
IQuick 143

1
pगलत तर्कों से निपटने के बारे में वह हिस्सा प्रतिभाशाली है।
leo3065

@ leo3065 धन्यवाद :)
IQuick 143

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