रानी को स्थानांतरित करना


10

इस quine वैरिएंट में, आपके प्रोग्राम को अपने स्रोत कोड को विकर्ण के ऊपर बाईं ओर नीचे से दाईं ओर स्थानांतरित करना चाहिए। उदाहरण के लिए:

आपका कार्यक्रम
पर
चार लाइनें

आउटपुट

 yof
 ono
 u u
 r r
    
 p l
 r i
 o n
 g e
 r s
 a
 m

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

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

आपके समाधान में कम से कम दो नॉन-न्यूलाइन अक्षरों में से प्रत्येक के साथ कम से कम दो लाइनें होनी चाहिए, और इसका स्वयं का ट्रांसपोज़ेशन नहीं होना चाहिए (आउटपुट स्रोत के समान नहीं हो सकता है।)

धोखा देने वाली क्वीन जो उस फ़ाइल से पढ़ती है जिसमें उनका स्रोत कोड होता है, एक URL से डेटा खींचता है, बिल्ट-इन का उपयोग करता है, और इसी तरह की अनुमति नहीं होती है।

यह कोड गोल्फ है: बाइट्स जीत में सबसे छोटा कोड।


क्या यह एक सच्ची रानी होने की आवश्यकता है?
20

2
@ThomasKwa के रूप में विरोध किया?
मार्टिन एंडर

@ MartinBüttner शायद वहाँ एक भाषा है जहाँ शाब्दिक रूप से प्रतिध्वनित किया जाता है। शायद ज़रुरत पड़े।
20

@ThomasKwa जब तक यह निर्दिष्ट सभी नियमों का पालन करता है ठीक है।
ल्यूक

क्या बाहरी पुस्तकालयों (जैसे जावास्क्रिप्ट में लोडश) का उपयोग निषिद्ध है?
मामा फन रोल

जवाबों:


5

CJam, 14 बाइट्स

{`"_~".+N*}
_~

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

कम होते हुए, शायद विखंडन समाधान की तुलना में थोड़ा कम दिलचस्प है।

व्याख्या

{       e# Quine framework. Runs the block while another copy of it is on the stack.
  `     e# Stringify the block.
  "_~"  e# Push the remaining code as a string.
  .+    e# Element-wise append... essentially puts the two strings in a grid and 
        e# transposes it.
  N*    e# Join with linefeeds.
}_~

10

विखंडन , 17 बाइट्स

फिर भी मेरी पसंदीदा भाषा क्वीन के लिए ...

'"
!0
0+
;!
DN
"!

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

व्याख्या

यह मूल विखंडन के समान है । वास्तव में, अगर यह "कम से कम दो नॉन-न्यूलाइन अक्षरों में प्रत्येक" नियम के साथ कम से कम दो लाइनें होनी चाहिए, तो मैं बस इसे ट्रांसपोज़ कर सकता था और इसके Rसाथ बदल सकता था D। यह नियम हालांकि चीजों को थोड़ा और दिलचस्प बनाता है, क्योंकि हमें एक और लाइन प्रिंट करने की आवश्यकता है।

नियंत्रण प्रवाह Dएक एकल परमाणु के दक्षिण में जाने के साथ शुरू होता है । चूंकि यह हिट करता है इसलिए यह "चारों ओर लपेटेगा और प्रिंट करेगा

'!0;D

STDOUT में, यह सामान्य क्वीन में कैसे होता है। '!तब परमाणु के द्रव्यमान को वर्ण कोड में सेट करता है !0एक टेलीपोर्टर जो दूसरे स्तंभ, जहां यह अभी भी दक्षिण में बढ़ने के लिए है परमाणु परिवहन करता है।

साथ +हम के मूल्य के बढ़ाने के परमाणु का द्रव्यमान "!N!प्रिंट उद्धरण, लाइनफीड, उद्धरण। STDOUT अब इस तरह दिखता है:

'!0;D"
"

चारों ओर लपेटने के बाद, परमाणु एक "और हिट करता है और अब दूसरी पंक्ति के शब्द को छापता है:

'!0;D"
"0+!N!

अब हम कर रहे हैं। परमाणु एक बार फिर से दूरसंचार का उपयोग करता है, और भूमि ;जिसमें इसे नष्ट कर देता है और जिससे कार्यक्रम समाप्त हो जाता है।

मुझे लगता है कि यहां सबसे साफ सा एक "नीचे और दूसरा सबसे ऊपर रखा जा रहा है ताकि मैं उन्हें एक बार में बिना !एक बार के मूल्य निर्धारित किए प्रिंट कर सकूं (क्योंकि यह फिर से स्ट्रिंग मोड में प्रवेश कर जाएगा)।


3

जावास्क्रिप्ट ईएस 6, 90 बाइट्स

$=_=>[...(_=`$=${$};$()`.split`
`)[0]].map((x,y)=>_.map(v=>[...
v][y]).join``).join`
`;$()

बुरा नहीं बुरा नहीं।

व्याख्या

यहाँ मानक quine ढांचा है:

$=_=>`$=${$};$()`;$()

संशोधित करने के लिए, मैं सिर्फ एक मैट्रिक्स बनाने के लिए newlines और chars के साथ quine string को विभाजित करता हूं, 2 मैप फ़ंक्शंस का उपयोग करके ट्रांसपोज़ किया गया, और आउटपुट बनाने के लिए शामिल हुआ।



2

बेफुज -93 , 57 बाइट्स

^
_^
,@
+,
5*
52
,+
*9
28
+|
9
8#
|!
 ,
##
!:
,^
#
:
^
""

यह स्टैक पर पहले कॉलम में प्रत्येक अक्षर डालकर काम करता है (केवल उद्धरण को छोड़कर), फिर स्टैक के प्रत्येक आइटम को प्रिंट करना। उसके बाद, यह उद्धरण प्रिंट करता है, एक नई रेखा प्रिंट करता है, और फिर दूसरे कॉलम पर जाता है। यह वही काम करता है जो एक नई रूपरेखा प्रिंट करता है।

आप शीर्षक में लिंक में इसका परीक्षण कर सकते हैं, लेकिन आपको कोड को विंडो में स्वयं कॉपी-पेस्ट करना होगा। यदि आप 'धीमा' बटन दबाते हैं, तो यह आपको वह रास्ता दिखाएगा जो उस समय पॉइंटर लेता है और स्टैक करता है।


क्या यह दूसरे कॉलम में उद्धरण को ऊपर ले जाने के लिए छोटा हो सकता है जैसे मैंने अपने विखंडन उत्तर में किया था?
मार्टिन एंडर

मैं उद्धरण को शीर्ष पर ले जा सकता हूं और दूसरे कॉलम को फिर से व्यवस्थित कर सकता हूं और यह अभी भी काम कर रहा है, लेकिन यह अभी भी 57 बाइट्स समाप्त हो रहा है क्योंकि पहले कॉलम में अभी भी एक ही ऊंचाई होनी है
केविन डब्ल्यू।

हम्म ठीक है, मुझे लगा कि यह आपको "केवल एक बार उत्पन्न करने की अनुमति दे सकता है , ताकि आप पहले कॉलम से दूसरे में कुछ कोड स्थानांतरित कर सकें।
मार्टिन एंडर

1

पायथन 2, 91 75 69 बाइट्स

s='#%r;print"s#\\n="+"\\n".join(s%%s)';print"s#\n="+"\n".join(s%s)
##

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

स्पष्टीकरण:

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

s='s=%r;print s%%s';print s%s

संशोधन के बाद:

s='s=%r;print"\\n".join(s%%s)';print"\n".join(s%s)

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

इसे अब सही ढंग से प्रिंट करने के लिए, मुझे #पहली दो पंक्तियों के अंत में प्रिंट करना होगा। इसलिए मैं पहले दो पात्रों को स्ट्रिंग से हटाता हूं s, और उन लोगों को प्रिंट करने से #पहले प्रिंट करता हूं s%s। मैंने नई बाइट को हटाकर कुछ बाइट्स को बचाने #के sलिए शुरुआत में एक डाल दिया ।

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