अपने कोड के पहले N अक्षर को प्रिंट करें


21

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

किसी भी तरह से अपने स्रोत कोड को पढ़ना और फ़ाइल, stdio, आदि से पढ़ना बंद कर दिया जाता है।

उदाहरण

(अपना कोड मानते हुए yourcode)

इनपुट => आउटपुट:

5=> yourc
10=> yourcodeyo
22=>yourcodeyourcodeyour

स्पष्टीकरण

आपका प्रोग्राम कम से कम 1 बाइट लंबा होना चाहिए।


15
2000 वीं कोड गोल्फ चुनौती पोस्ट करने के लिए बधाई! :)
मार्टिन एंडर

3
डगलस हॉफस्टैटर इसे पसंद करेंगे!
लुइस मेंडो

1
@ मार्टिनबटनर वास्तव में, हटाए गए 300 से अधिक [कोड-गोल्फ] प्रश्न हैं। लेकिन पास पर्याप्त;)
दरवाज़े

11
@ मार्टिनबटनर धन्यवाद। एक गोल संख्या तक जाने के लिए केवल 48!
यादृच्छिक

5
शायद यह समय है कि आपने स्पष्ट रूप से उल्लेख किया है कि खाली कार्यक्रम अमान्य हैं?
मार्टिन एंडर

जवाबों:



10

> <> , 49 बाइट्स

'3d*}r0ff+0i:&0(?.~~a*&"0"-+60.&~:?!;1-&:o}&" "0.

आधा कोड एक स्ट्रिंग से एक इंट में इनपुट परिवर्तित कर रहा है। यदि हमें इसके बजाय STDIN से पढ़े गए एक चार चार्ट के कोड बिंदु का उपयोग करने की अनुमति है, तो यह कार्यक्रम 21 बाइट्स में बहुत छोटा होगा:

'3d*}ri:?!;1-&:o}&60.

व्याख्या

मैं स्पष्टीकरण के लिए दूसरे कार्यक्रम का उपयोग करूंगा।

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

लेकिन> <> एक टॉरॉइडल 2 डी भाषा है, इसलिए निर्देश खत्म होने के बाद लाइन स्टार्ट करने के लिए वापस लपेटती है, 'फिर से टकराती है और स्ट्रिंग पार्स करना बंद कर देती है । नतीजा यह है कि हमने शुरुआती बोली को छोड़कर सभी आवश्यक चीजों को धक्का दे दिया है

3d*}ri:0=?;1-&:o}&60.

'ASCII 39 है, इसलिए हम प्रारंभिक उद्धरण को धक्का देकर बढ़ाते हैं 3d* = 3*13 = 39। हम फिर स्टैक को दाईं ओर ( }) और रिवर्स ( r) में देते हैं:

.06&}o:&-1;?=0:ir}*d3'

अब हम छपाई शुरू करने के लिए तैयार हैं। iइनपुट के चार में पढ़ता है, लेकिन> <> चार्ट मूल रूप से पूर्णांक हैं। पहले कार्यक्रम में, iएक लूप से प्रतिस्थापित किया जाता है जो STDIN से एक अंक स्ट्रिंग को पूर्णांक में परिवर्तित करता है।

फिर हम पहले N वर्ण को प्रिंट करने के लिए निम्नलिखित लूप निष्पादित करते हैं:

:?!;               If the top of the stack (N) is 0, then terminate
                   Otherwise...
1-                 Subtract 1 from N
&                  Move N to the register temporarily
:o                 Output the next char in the program
}                  Shift the stack right
&                  Put N back on the stack
60.                Repeat loop by jumping back to the first :

9

CJam, 34 17 16 बाइट्स

यह बहुत गोल्फ हो सकता है ..

{`"_~"+ri_@*<}_~

कोड विस्तार :

{`"_~"+ri_@*<}_~
{            }_~      "Put this code block on stack, take a copy and execute the copy";
 `                    "When executed, this block will the top element on stack to a string";
  "_~"                "Then put this string on stack";
      +               "Concat it to the the previous string on stack which ` created";
       ri             "Read an integer from STDIN";
         _@           "Copy the integer and put the concatinated string on top of stack";
           *          "Repeat the string input number of times";
            <         "Take the first input number of characters from the repeated string";

अंत में, स्टैक पर कुछ भी स्वचालित रूप से STDOUT में प्रिंट हो जाता है

इसे यहाँ ऑनलाइन आज़माएँ


5

पायथन 2, 117 बाइट्स

b=input();a=lambda x:(b*(2*(x+chr(34))+')'))[:b];print a("b=input();a=lambda x:(b*(2*(x+chr(34))+')'))[:b];print a(")

जीवन प्रोटिप: निष्पादित न करें list(itertools.cycle(x))। किसी कारण से, मैं कल्पना नहीं कर सकता कि क्यों, यह दुभाषिया को दुर्घटनाग्रस्त करता है।


1
itertools.cycle()एक अनंत जनरेटर है, इसलिए जब तक आपके कंप्यूटर में असीम स्मृति न हो, जब आपको समस्याएं हों :)
Sp3000

5

जावास्क्रिप्ट (ईएस 6), 65 52 50 47 41 39

q=n=>('q='+q).repeat(n/39+1).slice(0,n)

repeat()कोड क्लोन करने के लिए ES6 का उपयोग करता है , फिर नीचे स्लाइस करता है। हार्डकोड लंबाई का उपयोग करता है।


पुराना संस्करण (50):

q=n=>n>(l=(t='q='+q).length)?t+q(n-l):t.slice(0,n)

qएकल पैरामीटर लेते हुए एक फ़ंक्शन बनाता है ।

यह फ़ंक्शन टेक्स्ट को कड़ा करता है, और यदि nपाठ की लंबाई से अधिक है, तो पुनरावर्ती रूप से फ़ंक्शन को कॉल करता है। अन्यथा, यह पाठ का एक विकल्प देता है।

गैर ईएस 6 संस्करण (65):

function q(n){return t=q+'',l=t.length,n>l?t+q(n-l):t.slice(0,n)}

1
.repeatचक्रीय आवश्यकताओं के लिए ईएस 6 के बजाय पुनरावृत्ति का उपयोग करना, बस प्रतिभाशाली था।
याकूब

1
वास्तव में, ऐसा लगता है कि repeat()मुझे सक्षम करने के लिए यह एक गुच्छा नीचे काटने के लिए सक्षम है, इसलिए मैंने इसके बजाय इसका इस्तेमाल किया।
शिमोनस्टर

देखा कि नहीं। वैसे भी - यह एक बहुत अच्छा जवाब है
याकूब

क्यों /39+1? सिर्फ एक लंबी स्ट्रिंग क्यों नहीं छोड़नी चाहिए?
l4m2

1
q=n=>('q='+q).repeat(n).slice(0,n)फ़ायरफ़ॉक्स पर ठीक काम करता है
l4m2

5

जे - 24 चार

एक धनात्मक पूर्णांक तर्क देता है और एक स्ट्रिंग को बाहर निकालता है।

($],quote)&'($],quote)&'

J का कोई सेल्फ-रेफरेंस ट्रिक्स नहीं है, इसलिए हम इसे क्वीन तरीके से करते हैं। विस्फोट से समझाया:

  ],quote                 NB. right arg prepended to quotation of right arg (quine)
 $                        NB. cyclically take left-arg characters from that
(        )&'($],quote)&'  NB. preload right arg with  ($],quote)&

$J में dyadic ऑपरेटर अपने दाएं तर्क से आइटम को बाईं ओर निर्दिष्ट आयामों में फिट करने के लिए लेता है। जब आयाम एक एकल संख्या है, तो यह पात्रों की एक सरल 1D सूची है, इसलिए हम वही करते हैं जो सवाल पूछता है।

इसे अपने लिए tryj.tk पर आजमाएँ


quoteक्रिया का सामान्य उद्देश्य क्या है ?
रैंडम फिरा

@randomra मानक पुस्तकालय में इसकी परिभाषा है ''''&,@(,&'''')@(#~ >:@(=&'''')), या अंग्रेजी में, "किसी भी 'वर्ण को दोहराएं , फिर एक को प्रारंभ और अंत में जोड़ें।" J, Ada-like string शाब्दिक का उपयोग करता है इसलिए यह तार से बच जाता है।
एलगोरिदमशार्क

4

k2 - 7 चार

{x#$_f}

अंग्रेजी में, यह तर्क के साथ एक फ़ंक्शन है, xजिसकी परिभाषा " xटेक स्ट्रिंग सेल्फ" है।

  • स्व (संज्ञा _f) वर्तमान में कार्य को अंजाम देने वाला अंतरतम है। यहाँ यह समारोह है {x#$_f}
  • स्ट्रिंग (मोनैडिक $) अपने तर्क को एक स्ट्रिंग में परिवर्तित करता है। किसी फ़ंक्शन के मामले में, यह फ़ंक्शन की मूल परिभाषा के साथ एक स्ट्रिंग बनाता है।
  • ले लो (dyadic #) लेता बाएं आर्ग मदों में सूची तैयार राइट आर्ग । एक स्ट्रिंग के मामले में, आइटम वर्ण हैं, इसलिए यह वही कर रहा है जो हम चाहते हैं।

यह ओपन-सोर्स कोना में काम नहीं करेगा , क्योंकि यह ब्लैक होल बनाता है जो उन्हें किसी भी चीज के तर्क के रूप में उपयोग करने के सभी प्रयासों को खाते हैं। मैं उचित k3 शब्दार्थों का अनिश्चित हूं लेकिन वे शायद अधिक दयालु नहीं हैं।

Q में, यह है {x#string .z.s}और k4 में है {x#2_$.z.s}। हमें 2_k4 में दो प्रारंभिक वर्णों को छोड़ने के लिए उपयोग करना होगा, केवल उन कारणों के लिए जो एक माँ प्यार कर सकती थी।


3

रूबी, 66 64 63 बाइट्स

eval s=%q(puts"eval s=%q(#{s})".chars.cycle.take(gets.to_i)*'')

कॉलिंग से बचने के लिए फ़ंक्शन का उपयोग करना getsथोड़ा लंबा है (81 बाइट्स):

def f(i);eval s=%q(puts"def f(i);eval s=%q(#{s});end".chars.cycle.take(i)*'');end

उसी के लैम्ब्डा संस्करण 69 और 65 बाइट्स हैं:

l=->i{eval s=%q(puts"l=->i{eval s=%q(#{s})}".chars.cycle.take(i)*'')}
->i{eval s=%q(puts"->i{eval s=%q(#{s})}".chars.cycle.take(i)*'')}

1
.cycleसाफ है, मुझे यह याद रखना होगा। :) आप शायद छोटा कर सकते हैं .joinकरने के लिए *''
मार्टिन एंडर

आप String#formatप्रक्षेप के बजाय का उपयोग करके कुछ वर्ण बचा सकते हैं :eval s="$><<('eval s=%p'%s).chars.cycle.take(gets.to_i)*''"
वेंचरो

3

गणितज्ञ, 65 बाइट्स

Print[StringTake[StringJoin @@ Table[ToString[#0], {#1}], #1]] & 

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

Print[StringTake[StringJoin @@ Table[ToString[#0], {#1}], #1]] & [75]

जो प्रिंट करता है

Print[StringTake[StringJoin @@ Table[ToString[#0], {#1}], #1]] & Print[Stri

दुर्भाग्य से, लागू करने के ToStringएक समारोह के लिए वास्तव में जिस तरह से आप समारोह में प्रवेश किया उपज नहीं है, इसलिए मैं सफेद स्थान को निकाल, को कम करके इस को छोटा नहीं कर सकते #1करने के लिए #या समारोह कॉल के लिए उपसर्ग अंकन का उपयोग।


"छोटा" करने के #लिए #1?
भूमिगत

@undergroundmonorail दूसरे रास्ते में गोल, धन्यवाद
मार्टिन

3

MATLAB, 319 141 अक्षर

मैं मूल से कुछ बाइट्स निचोड़ने में कामयाब रहा:

function d=g(n);d='gvodujpo!e>h)o*<e>(<e>\e)2;2:*.2-e-e)2:;foe*.2^<e>e)2,npe)1;o.2-252**<';d=[d(1:19)-1,d,d(19:end)-1];d=d(1+mod(0:n-1,141));

बहुत बढ़िया जवाब...! पता नहीं कैसे यह काम करता है :-)
लुइस मेंडो

3

जावास्क्रिप्ट, 34 बाइट्स

f=n=>n&&('f='+f+f(n-1)).slice(0,n)

पुनरावर्ती फ़ंक्शन जो कोड nबार दोहराता है , फिर परिणाम स्लाइस करता है।


3

जाप , 2 बाइट्स

îî

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

पहला îएक नंबर तरीका है जो एक पैरामीटर लेता है, और इसे लंबाई तक दोहराता है n। क्योंकि यह पहली विधि है,n इनपुट बन जाती है। दूसरा îएक तार में डाला जाता है, और दोहराया जाता है।

यह ट्रांसपाइल्स:

n.î("î") -> बार-बार "î" लंबाई तक पहुंचने तक इसेn

8 बाइट का घोल

îQi"îQi"

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

îQi"îQi" के लिए transpiles n.î(Qi"îQi")

n.î(Qi"îQi")
      "îQi"    // String "îQi"          -> îQi
    Qi         // Insert "              -> îQi"
n.î            // Repeated to length n  -> îQi"îQi"îQi"  (n=12)

1
अपनी सादगी में सुंदर!
झबरा

2

आर, 203 बाइट्स

जब एन = 203, कोड पूरी तरह से खुद को प्रिंट करता है।

(f <- function(N){
str <- paste0("(f <- function(N)", paste0(as.character(body(f)), collapse = "\n"), ")}(", N, ")")
cat(rep(str, floor(N/nchar(str))), sep = "")
cat(substr(str, 1, N%%nchar(str)))})(203)

जब एन = 50, कोड खुद को ट्रिम कर देता है।

(f <- function(N){
str <- paste0("(f <- function(N

जब एन = 300, कोड आंशिक रूप से खुद को दोहराता है।

(f <- function(N){
str <- paste0("(f <- function(N)", paste0(as.character(body(f)), collapse = "\n"), ")}(", N, ")")
cat(rep(str, floor(N/nchar(str))), sep = "")
cat(substr(str, 1, N%%nchar(str))))}(300)(f <- function(N){
str <- paste0("(f <- function(N)", paste0(as.character(body(f)), collapse = "\

इसे आजमाइए:(f=function(N){s=paste0("(f=",paste0(capture.output(f),collapse=""),")");cat(rep(s,N%/%nchar(s)),substr(s,1,N%%nchar(s)),sep="")})(200)
थॉमस

2

मतलाब (57)

function s=f(n);s=evalc('type f');s=s(mod(1:n,nnz(s))+1);

अंतिम पंक्ति में प्रारंभिक 1सूचकांक (के बजाय 0) है क्योंकि मतलाब का कार्य typeएक प्रारंभिक लाइन-फीड का परिचय देता है, जिसे हटा दिया जाना चाहिए। डेनिस को उनके सुधार के लिए धन्यवाद (अंतिम सूचकांक) और उनके सुझाव के लिए (से nnzकम numel)।


मुझे डर है कि यह वह नहीं करेगा जो मैं उम्मीद करूंगा (एफ (4) रिटर्न 'फन'), अच्छी खबर यह है कि आप इसे 2 चर बचाकर ठीक कर सकते हैं। (निकालें -1)। - मुझे लगता है कि आप दूसरी न्यूलाइन को भी हटा सकते हैं और इसके numelलिए स्वैप कर सकते हैं nnz
डेनिस जहरुद्दीन 15

@ डेनिस इन दो विचारों के लिए धन्यवाद! मैंने
लुइस मेंडो

हम्म, मैं बज़किल नहीं बनना चाहता, लेकिन type fआवश्यकता के साथ कोई टकराव नहीं है और किसी भी तरह से अपने स्रोत कोड को पढ़ना और फ़ाइल, स्टडियो, आदि से पढ़ना बंद है ?
knedlsepp

@knedlsepp मुझे लगता है कि आप सही हैं। मुझे वह संदेह भी था। typeशायद हार्ड डिस्क तक पहुँचता है। क्या आपको लगता है कि मुझे जवाब हटा देना चाहिए?
लुइस मेंडो

@LuisMendo: मुझे नहीं लगता कि कोई भी वास्तव में दिमाग रखता है। :-) मैं कल ही इस समस्या को दूर कर देना चाहता था, क्योंकि मैं पहले भी कुछ समय पहले इसी तरह की एक क्वाइल का निर्माण करने में असफल रहा था। और निश्चित रूप से मुझे जांचना होगा कि क्या पहले से ही मैटलैब समाधान था। :-) अंत में इसने मुझे पर्याप्त प्रेरणा दी कि अंत में एक समाधान तैयार करने के लिए पर्याप्त गहराई तक खुदाई करें। (मैंने आपके modविचार को विचार द्वारा चुरा लिया है ।)
knedlsepp

2

यूनिरी (1-8 संस्करण) , 23855 बाइट्स

इनपुट को '1' के रूप में जोड़ा जाता है, और कोड 23855 '1 का है ( ,[.,])


1
यह क्या ब्रेनफक भी अनुवाद करता है?
DJMcMayhem

@DJMcMayhem यह एक बिल्ली है
l4m2

अब एक ऐसी भाषा खोजें जिसमें अनरी इनपुट का कोई मतलब हो और कोई 1-चार प्रोग्राम बिल्ली करे
l4m2

2

जाप , 40 28 बाइट्स


"îR+Q+V+Q+R+V"
îR+Q+V+Q+R+V

पहली बार एक क्वीन लिख रहा है, इसलिए यह संभवतः काफी छोटा हो सकता है। दूसरी ओर, मुझे काफी खुशी है कि मुझे यह काम करने के लिए मिला।

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

ओलिवर की बदौलत 12 रन बनाए

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


अच्छा :) आप की जगह ले सकता tTUके साथ ¯Uऔर आप उपयोग कर सकते हैं îके स्थान पर pसामने पर ले जाकर: ऑनलाइन कोशिश करो
ओलिवर

दूसरे विचार पर, मुझे नहीं लगता कि आपको इसे बिलकुल भी करने की आवश्यकता नहीं है। îR+Q+V+Q+R+Vबस ठीक काम करना चाहिए।
ओलिवर

@ ओलिवर ओह यह चतुर है, मुझे इसके बारे में पता नहीं था î, यह बहुत आसान है। आपका बहुत बहुत धन्यवाद!
लीख

मैं या तो quines के साथ अच्छा नहीं हूँ, लेकिन मुझे लगता है कि यह 24 बाइट्स के लिए काम करना चाहिए।
झबरा

1

सी ++, 305

int L=305;string s="int main(){string t=\"string s=\";int n;cin>>n;t+=s;t+=\"\";\";t+=s;while(n>0){if(n>L){cout<<t;n-=L;}else{cout<<t.substr(0,n);}return 0;}";
int main(){string t="int L=305;string s=\"";int n;cin>>n;t+=s;t+="\";";t+=s;while(n>0){if(n>L){cout<<t;}else{cout<<t.substr(0,n);}n-=L;}return 0;}

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


1

पायथ, 15 13 14 बाइट्स

<jN*Q]"<jN*Q]"

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

का संशोधित संस्करण मानक पायथ क्वीन


@ l4m2 कैसे? कृपया समझाएं, मुझे कुछ भी गलत नहीं दिखता ...
hakr14

29 <jN*Q]"<jN*Q]<jN*Q]"<jN*Q]<jNगलत होना चाहिए ?
l4m2

@ l4m2 आह, ठीक है आप। मैंने इसे ठीक कर लिया है।
हकर १४

<jN*Q]"<jN*Q]"काम लगता है?
l4m2

हाँ, मुझे एहसास हुआ। मदद के लिए धन्यवाद btw!
हकर १४

1

हून , 185 बाइट्स

=/(f "=/(f k |=(n=@ =+((trim 5 f) `tape`(scag n `tape`(zing (reap n :(weld p <f> (slag 1 q))))))))" |=(n=@ =+((trim 5 f) `tape`(scag n `tape`(zing (reap n :(weld p <f> (slag 1 q))))))))

fएक टेप के रूप में प्रोग्राम के कोड पर सेट करें , लेकिन खुद के लिए "के" के साथ। चर 5, चरित्र सेट पर टेप को विभाजित करें [p=left q=right]। 1 के वर्ण के बाद तार p, मूल स्ट्रिंग fऔर सब कुछ एक साथ वेल्ड करें q। उस स्ट्रिंग nसमय को दोहराएं , फिर पहले लौटेंn अक्षर ।

ऐसा करने से हून के stdlib द्वारा प्रारूप फ़ंक्शन या खोज-और-प्रतिस्थापित नहीं होने से थोड़ा बाधा उत्पन्न हुई ... इसके अलावा, मुझे यकीन नहीं है कि हमें इसके बाद एक और कलाकार की आवश्यकता क्यों है scag, क्योंकि इसे टाइप जानकारी रखना चाहिए। तो यह जाता है।




1

गोल> <> , 12 बाइट्स

"r2ssIFLko|;

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

यह काम किस प्रकार करता है

"r2ssIFLko|;

"..."   Push the chars in reverse order
r2ss    Reverse the stack, then push `"`
IF...|  Input n, and repeat the following n times...
  L     Push the loop counter (0 to n-1)
   k    Pop x and copy x-th from the top
    o   Pop and print as char
;       Halt

k किसी भी समय लपेट सकते हैं, इसलिए हमें इनपुट के आधार पर पूरे स्टैक को डुप्लिकेट करने की आवश्यकता नहीं है।


1

स्माइलबासिक, 106 66 बाइट्स

INPUT N?MID$(("+CHR$(34))*3,23,N)INPUT N?MID$(("+CHR$(34))*N,23,N)

0

KSFTgolf - 4 , 6 बाइट्स

KSFTgolf अगर एक भाषा है जिसे मैं कोड गोल्फ के लिए डिजाइन करने का प्रयास कर रहा हूं। मैं इसे बहुत बदल रहा हूं, इसलिए यह वास्तव में नहीं गिनना चाहिए।

☃\@2

यह कौनसी भाषा है ? कोई लिंक? युक्ति? स्पष्टीकरण ..
ऑप्टिमाइज़र

@Optimizer आह, ठीक है। मैं उसके बारे में भूल गया। यह एक भाषा है जिसे मैंने कोड गोल्फ के लिए डिज़ाइन किया है। यह अंत में एक चुनौती है जहां (यदि मैं सभी बग को ठीक करता हूं) तो यह वास्तव में जीत सकता है।
केएसएफटी

1
इसके अलावा, जहां तक ​​मैं देख सकता हूं, भाषा 10 मिनट पहले बनाई गई थी, इसलिए तकनीकी रूप से, यह एक गैर-प्रतिस्पर्धात्मक उत्तर है :)। इसके अलावा, मुझे लगता है कि यह आपके कोड के अनुरूप ब्लॉक है , जो पूरी तरह से कुछ ऐसा दिखता है जो विशेष रूप से इस चुनौती के लिए किया गया है (क्योंकि आपकी पूरी फ़ाइल में कोई अन्य यूनिकोड आधारित कोड ब्लॉक नहीं हैं)।
ऑप्टिमाइज़र

@ ऑप्टिमाइज़र वह निर्देश वास्तव में पहले भाषा में था (हालांकि एक प्रतिबद्ध जिसने इसे बदल दिया था, चुनौती पोस्ट होने के बाद इसे थोड़ा धक्का दिया गया था), जो कुछ दिनों पहले बनाया गया था। क्योंकि मुझे नहीं लगता कि यह उस भाषा के संस्करण में काम करेगा जो सार्वजनिक थी जब चुनौती पोस्ट की गई थी, हालांकि, मुझे नहीं लगता कि इस उत्तर को वास्तव में गिनना चाहिए, जैसा कि मैंने अपने जवाब में कहा था।
केएसएफटी

4
क्या आप एक स्नोमैन का निर्माण करना चाहते हैं?
दोष


0

जे, 41 बाइट्स

अब वो ब्रेन टीज़र था!

((,quote,')$~'"_)'((,quote,'')$~''"_)')$~

स्पष्टीकरण:

((,quote,')$~'"_)'((,quote,'')$~''"_)')$~  | Expression taking 1 argument
                                       $~  | Reshape left argument to fit right, taking cyclically.
(                                     )    | One large expression that evaluates to a string
                 '((,quote,'')$~''"_)'     | String literal containing the code to the left of it
 (,quote,'$)~'"_)                          | A 4-Hook:
         '$)~'"_                           | The string '$)~'
   quote,                                  | Appended to the quoted version of the string
  ,                                        | Appended to the raw string

उदाहरण:

   ((,quote,')$~'"_)'((,quote,'')$~''"_)')$~ 10
((,quote,'

   ((,quote,')$~'"_)'((,quote,'')$~''"_)')$~ 20
((,quote,')$~'"_)'((

   ((,quote,')$~'"_)'((,quote,'')$~''"_)')$~ 30
((,quote,')$~'"_)'((,quote,'')

   ((,quote,')$~'"_)'((,quote,'')$~''"_)')$~ 41
((,quote,')$~'"_)'((,quote,'')$~''"_)')$~

   ((,quote,')$~'"_)'((,quote,'')$~''"_)')$~ 50
((,quote,')$~'"_)'((,quote,'')$~''"_)')$~((,quote,


0

जावा 10, 193 176 बाइट्स

n->{var s="n->{var s=%c%s%1$c;s=s.format(s,34,s);for(int i=n;i>0;i/=176)s+=s;return s.substring(0,n);}";s=s.format(s,34,s);for(int i=n;i>0;i/=176)s+=s;return s.substring(0,n);}

स्पष्टीकरण:

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

n->{                       // Method with integer parameter and String return-type
  var s="n->{var s=%c%s%1$c;s=s.format(s,34,s);for(int i=n;i>0;i/=176)s+=s;return s.substring(0,n);}";
                           //  Unformatted source code
  s=s.format(s,34,s);      //  Create the formatted quine
  for(int i=n;i>0;         //  Loop `i` as long as it's not 0
      ;                    //    After every iteration:
       i/=176)             //     int-divide `i` by the hardcoded length of the source code
    s+=s;                  //   Exponentially enlarge the source code
  return s.substring(0,n);}//  Return the first `n` characters of the source code

:

  • var sअस्वरूपित स्रोत कोड शामिल हैं।
  • %sइस स्ट्रिंग को स्वयं के साथ इनपुट करने के लिए उपयोग किया जाता है s.format(...)
  • %c, %1$cऔर 34डबल-कोट्स को फॉर्मेट करने के लिए उपयोग किया जाता है।
  • s.format(s,34,s) यह सब एक साथ रखता है।

चुनौती हिस्सा:

  • for(int i=n;i>n;i/=176)लूप ceil(n/176)बार है, जहां176 स्रोत कोड की लंबाई है।
  • s+=s;तेजी से स्रोत कोड स्ट्रिंग के आकार को बढ़ाता है। ( abहो जाता है abab; ababहो जाता है abababab; ababababहो जाता हैabababababababab , आदि)
  • s.subtring(0,n);nस्ट्रिंग के पहले पात्रों को लेता है ।


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