कितनी बार आपको एक रानी को गोल्फ करना होगा?


12

इस चुनौती के लिए, आपको एक प्रोग्राम बनाना होगा जो एक पूर्णांक लेता है xऔर xकई बार इसके स्रोत को आउटपुट करता है।

नियम

  • यह कोडगोल्फ है, इसका उद्देश्य आपके प्रोग्राम को कम से कम बाइट्स देना है

  • यदि आप एक फ़ंक्शन सबमिट करते हैं, तो फ़ंक्शन xको एक पैरामीटर के रूप में लेना चाहिए और या तो वापस लौटना चाहिए या अपने कोड की संपूर्णता को xकई बार STDOUT में प्रिंट करना चाहिए । फंक्शन बॉडी भी खाली नहीं होनी चाहिए

  • यदि आप एक लैम्ब्डा जमा करते हैं, तो आपके लिए इसे किसी वैरिएबल को सौंपना आवश्यक नहीं है

  • मानक ढील प्रतिबंध लागू होते हैं।

  • खाली कार्यक्रमों की मनाही है

  • आपके प्रोग्राम को तभी काम करना होगा जब xएक पूर्णांक 0 से बड़ा या बराबर हो

  • हो सकता है कि आपका प्रोग्राम भी अपने स्रोत कोड के किसी भाग को सीधे न पढ़े


अच्छा पहला प्रश्न
बाल्ड बन्था

हो सकता xहै 0, या क्या हम इसे सकारात्मक पूर्णांक तक सीमित कर सकते हैं?
mbomb007

क्या हमारे कार्य के स्रोत को पढ़ने की अनुमति है?
झबरा

@ mbomb007, मैंने नियमों को स्पष्ट करने के लिए एक संपादन किया है, xशायद किसी भी पूर्णांक से बड़ा या 0 के बराबर
Dignissimus - Spammy

@ शैगी, मैंने सोचा था कि यह एक मानक खामियाजा था, ऐसा लगता है जैसे यह नहीं था। मैंने इस प्रश्न का स्पष्ट रूप से संपादन किया है कि कोई प्रोग्राम इसके स्रोत कोड के किसी भाग को नहीं पढ़ सकता है
डिग्निसिमस - स्पैमी

जवाबों:


8

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

ध्यान रखें अल्पविराम और न्यूलाइन।

s='s=%r;print s%%s*input(),\n';print s%s*input(),

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


@ mbomb007 मान लें कि कोड के अंत में एक नई रेखा है। समस्या सुलझ गयी।
एमडी एक्सएफ

ओपी ने कहा कि x शून्य हो सकता है, जिस स्थिति में कुछ भी मुद्रित नहीं किया जाना चाहिए, इसलिए यह उत्तर गलत है।
mbomb007

@ निकेता नहीं, यह एक नई रेखा छापता है, जो गलत है।
mbomb007

0 मेरे लिए कोई नई प्रिन्टिंग प्रिंट नहीं करता है, जैसा कि sys.stdout.write("2")इसके बाद उपयोग करके परखा गया ।
अर्जन जोहान्सन


4

RProgN 2 , 8 बाइट्स

{`{.*¶}{

RProgN2 लूप क्वीन इसके लिए विशेष रूप से अच्छी तरह से काम करता है!

{     } # A function literal
       {# Without a matching }, this loops back to the second instruction, which essentially runs the function. This is a bug, but it works to make the "Looping Quine".
 `{.    # Append the literal {, stringifying the function.
    *   # Multiply the stringified function by the input.
     ¶  # Terminate the program.

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


4

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

7 बाइट बचाने के लिए lanlock4 के लिए धन्यवाद!

StringRepeat[ToString[#0], #1] & 

शुद्ध कार्य एक nonnegative पूर्णांक तर्क ले रहा है। ToString[#0]वर्तमान शुद्ध फ़ंक्शन की परिभाषा तक पहुंचने के लिए मानक मैथमेटिका तरीका है; StringRepeat[..., #1]एक साथ उस स्ट्रिंग की कॉनकैट (इनपुट) प्रतियां। उदाहरण के लिए,

StringRepeat[ToString[#0], #1] & [2]

पैदावार:

StringRepeat[ToString[#0], #1] & StringRepeat[ToString[#0], #1] & 

क्या आप एक उपयोग उदाहरण पोस्ट कर सकते हैं? चल रहा है, उदाहरण के लिए , StringJoin @@ Table[ToString[#0], #1] & [2]मुझे एक त्रुटि देता है।
जूलियन वुल्फ

वास्तव में? वह सटीक कॉल मेरे लिए काम करता है। मैं Mathematica 11 का उपयोग कर रहा हूं ....
ग्रेग मार्टिन

हम्म, मैं अभी भी 10 का उपयोग कर रहा हूं (v10.0.1.0) -यह क्या हो सकता है। संदर्भ के लिए, यहां जो त्रुटि मुझे मिलती है वह है:Table::itform: Argument 2 at position 2 does not have the correct form for an iterator.
जूलियन वुल्फ

अहा - मुझे पता है कि गणितज्ञ १०.२ और उसके बाद Table[x,5]वापस आएगा {x,x,x,x,x}, लेकिन गणित १०.१ में यह इस तरह की त्रुटि देता है (यह उम्मीद करता है Table[x,{5}])।
ग्रेग मार्टिन

मुझे लगता है कि आप की जगह ले सकता StringJoin @@ Tableसाथ StringRepeat
पेड़ नहीं



3

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

अगर यह समाधान काम करता है x=0। एक एकल अनुगामी न्यूलाइन है।

s='s=%r;exec"print%%r;"%%(s%%s)*input()';exec"print%r;"%(s%s)*input()

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


अजगर 2, 60 बाइट्स (अमान्य)

यह मानता है कि x>=1, लेकिन ओपी ने स्पष्ट किया कि xशून्य हो सकता है। एक एकल अनुगामी न्यूलाइन है।

s='s=%r;print(s%%s*input())[:-1]\n';print(s%s*input())[:-1]

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


2

अंडरलोड , 12 बाइट्स

(a(:^)*~^):^

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

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

यह सिर्फ एक सार्वभौमिक क्वीन कंस्ट्रक्टर है (a(:^)*):^, प्लस ~^("तर्क के बराबर कई प्रतियां बनाएं")।



1

जेली , 10 बाइट्स

“;⁾vṾẋɠ”vṾ

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

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

“;⁾vṾẋɠ”vṾ  Main link. No arguments.

“;⁾vṾẋɠ”    Set the argument and the return value to the string ';⁾vṾẋɠ'.
         Ṿ  Uneval; yield '“;⁾vṾẋɠ”'.
        v   Eval ';⁾vṾẋɠ' with argument '“;⁾vṾẋɠ”'.
  ⁾vṾ           Yield 'vṾ'.
 ;              Concatenate '“;⁾vṾẋɠ”' and 'vṾ', yielding the source code.
      ɠ         Read an integer from STDIN.
     ẋ          Repeat the source code that many times.

4
यह स्वादिष्ट लगता है, लेकिन मेरे मामा ने मुझे हमेशा कहा कि मैं अजीब दिखने वाली चीजों को अपने मुंह में नहीं डालूं।
मतीन उल्हाक

1

जीएनयू मेक , 49 बाइट्स

$(foreach ,$(shell seq $1),$(strip $(value $0))) 

मेक एक सिंगल स्पेस द्वारा कॉपियों में शामिल हो जाएगा, इसलिए मुझे अंत में अतिरिक्त स्पेस कैरेक्टर को शामिल करना होगा और stripआवश्यकता के अनुसार विश्वास के साथ पालन करने के लिए इसे बीच में हटाना होगा ।


ऐसा लगता है कि यह स्रोत कोड को पढ़ता है, जो डिफ़ॉल्ट रूप से और स्पष्ट रूप से निषिद्ध दोनों है।
अर्जन जोहानसन

@ ReadrjanJohansen नहीं, यह स्रोत नहीं पढ़ता है, यह एक चर मान पढ़ता है। यह अन्य उत्तरों के समान ही सिद्धांत है, उदाहरण के लिए JS या Python।
आयुष ush

@ .RjanJohansen ओह, मैं देख रहा हूँ। $0मेक फ़ंक्शंस में गोले जैसी चीज़ नहीं है। यह उस चर का नाम है जिसे फ़ंक्शन कहा जाता है। देखें gnu.org/savannah-checkouts/gnu/make/manual/html_node/...
eush77

आह इस तरह के एक ग्रे क्षेत्र। BTW, पायथन वाले ऐसा नहीं करते हैं।
अर्जन जोहान्सन

@ AnswerrjanJohansen मैं कहूंगा कि यह जवाब जैथन्स के मुकाबले पायथन के ज्यादा करीब है। सब callकर रहा है प्रतिस्थापन $0और $1वास्तविक मापदंडों के साथ - यह पायथन की तरह सरल स्ट्रिंग प्रक्षेप है %
eush77


1

बेतालोड , 203 बाइट्स

स्पष्टता के लिए जोड़े गए नए समाचार:

(a(:^)*(!()):#(}:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*{)>(0)(!()){:^}(1)(){:^}(2)(:*){:^}(
3)(::**){:^}(4)(:*:*){:^}(5)(::*:**){:^}(6)(:*::**){:^}(7)(::*::***){:^}(8)(:*:*:*){:^}(9)(
::**::**){:^}R^^S):^

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

स्पष्टीकरण:

मैं एक क्वीन-रैपर में कार्यक्रम को लपेटता हूं: (a(:^)*और):^ । इसका मतलब है कि क्वीन रैपर के अंदर सभी कोड में स्टैक के निचले भाग में प्रोग्राम का सोर्स कोड होगा।

अंकों को एक सामान्य चर्च अंक में बदलने के लिए, मैं प्रत्येक अंक को कोड के साथ बदलकर 10 तक गुणा करने और उस अंक को जोड़ने की तकनीक का उपयोग करता हूं:

0 -> (::*:**:*)*
1 -> (::*:**:*)*(:)~*(*)*
2 -> (::*:**:*)*(::)~*(**)*
3 -> (::*:**:*)*(:::)~*(***)*

यहाँ बहुत दोहराव है, तो चलो इसे एक उपप्रोग्राम में पैकेज करें जो स्टैक के शीर्ष से एक चर्च अंक लेगा और इसका उपयोग "अंक स्ट्रिंग:" बनाने के लिए करेगा।

:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*

मैंने इसे एक नए वातावरण में डाला ताकि इसे जल्दी से पहुँचा जा सके:

#(}:(:)~^a((::*:**:*)*)~*(~*)*~(*)~^a*(*)*{)>

अब मैं प्रतिस्थापन कोड बना सकता हूं RRबेटालड कोड के साथ स्टैडिन से एक स्ट्रिंग को बदलने के लिए लुकअप टेबल बनाने के लिए स्टैक के शीर्ष तत्वों का उपयोग करता है। यह इस तरह काम करता है:

()
(0)(code for 0)
(1)(code for 1)
(2)(code for 2)
...
R

हालाँकि, हम उन सबप्रोग्राम का उपयोग कर सकते हैं जो हमने कोड सेगमेंट बनाने के लिए किए थे:

(0)(!()){:^}
(1)(){:^}
(2)(:*){:^}
(3)(::**){:^}
...

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

मजेदार तथ्य: मैंने कई महीनों तक इस सबमिशन के लिए एमडी किया है। मैंने एक प्रश्न को गलत समझने के बाद इसे रखा था (जो मुझे अब और नहीं मिल सकता है)। मुझे इसे पोस्ट करने के लिए अपने रीसायकल बिन से खोदना पड़ा।



1

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

_="input('_=%r;exec _'%_*input())";exec _

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

के inputबजाय का उपयोग कर एक थोड़े hacky उत्पादन करता है print, क्योंकि printएक अजीब बग एक newline मुद्रण जब यह नहीं माना जाता है शामिल है ... । EOF त्रुटि के साथ बाहर निकलता है।

स्पष्टीकरण:

_="input('_=%r;exec _'%_*input())"; # Set _ to a string
exec _                              # Execute that string
input(                        )     # "print"
      '_=%r;exec _'%_               # The source code with _ formatted in
                     *input()       # Actual input many times



0

पर्ल, 48 बाइट्स

print"$_\47"x(2*pop)for'print"$_\47"x(2*pop)for'

\47एकल उद्धरण ( ') के लिए ऑक्टल एस्केप है । इसकी व्याख्या डबल कोट्स ( ") के अंदर की गई है, लेकिन सिंगल कोट्स के अंदर नहीं।


0

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

_=>alert(`${f.name}=${f}`.repeat(_))

संपादित करें

+10 बाइट्स f=भी प्रदर्शित होने चाहिए


f=

_=>alert(`${f.name}=${f}`.repeat(_))

f(2);


@Downvoter क्यों?
वेदेज़

@ कैइडो मुझे नहीं पता .. क्या मुझे रखना चाहिए f=?
वेदेज़

आपका कोड toStringफ़ंक्शन पर अंतर्निहित रूप से कॉल करके स्वयं पढ़ रहा है ।
ऐनाबिस

@acbabis कॉलिंग f.toString()या fएक ही है, लेकिन यह फ़ंक्शन का नाम प्रदर्शित नहीं करेगा
Weedoze

मेरा मानना ​​है कि @acbabis का मतलब यह है कि यह चुनौती के अंतिम बिंदु का उल्लंघन करता है "आपका प्रोग्राम सीधे अपने स्रोत कोड के किसी भी हिस्से को नहीं पढ़ सकता है" - fइस तरह से अपने स्वयं के स्रोत का उल्लेख कर रहा है।
क्षितिज 3

0

सीजाम , 20 12 बाइट्स

मार्टिन एंडर की बदौलत 8 बाइट बच गईं

{"_~"+ri*}_~

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

Exaplanation

{       e# Begin a block literal:
 "_~"+  e#  Add whatever's on the stack to the beginning of the array ['_', '~'].
 ri*    e#  Repeat the resulting array a number of times equal to the input.
}       e# Close the block. Push it on the stack.
_~      e# Copy it and run it.

0

PHP, 194 बाइट्स

<?php $a="PD9waHAgJGE9IiMiOyRpPSRhcmd2WzFdO3doaWxlKCRpLS0pZWNobyBzdHJfcmVwbGFjZShjaHIoMzUpLCRhLGJhc2U2NF9kZWNvZGUoJGEpKTs=";$i=$argv[1];while($i--)echo str_replace(chr(35),$a,base64_decode($a));

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

गोल्फ बिल्कुल भी नहीं, क्योंकि बी 64 क्वाइन होते हैं।


0

जा , २५ , 254 बाइट्स

इससे मुझे पीड़ा होती है।

package main;import(."fmt";."strings";."strconv";."os");func main(){s:="package main;import(.\"fmt\";.\"strings\";.\"strconv\";.\"os\");func main(){s:=%q;n,_:=Atoi(Args[1]);Print(Repeat(Sprintf(s,s),n))}";n,_:=Atoi(Args[1]);Print(Repeat(Sprintf(s,s),n))}

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


0

माइक्रोस्क्रिप्ट II, 22 बाइट्स:

"v{lqp}sN*h"v{lqp}sN*h

माइक्रोसॉफ़्ट II, 20 बाइट्स (लेकिन तकनीकी रूप से अमान्य है क्योंकि यह एक कोड ब्लॉक के स्रोत कोड तक पहुंचता है)

{s""+`"~sN*"s`+}~sN*


0

पायथन 3, 69 बाइट्स

s='s=%r\nx=int(input())\nprint(s%%s*x)\n'
x=int(input())
print(s%s*x)


0

05AB1E , 17 बाइट्स

0"D34çý×?"D34çý×?

डिफ़ॉल्ट का संशोधन 0"D34çý"D34çýजोड़कर×?

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

स्पष्टीकरण:

0                   # Push 0 to the stack
                    #  STACK: [0]
 "D34çý×?"          # Push the string 'D34çý×?' to the stack
                    #  STACK: [0, 'D34çý×?']
          D         # Duplicate this string
                    #  STACK: [0, 'D34çý×?', 'D34çý×?']
           34ç      # Push '"' to the stack
                    #  STACK: [0, 'D34çý×?', 'D34çý×?', '"']
              ý     # Join the stack by this '"' delimiter
                    #  STACK: ['0"D34çý×?"D34çý×?']
               ×    # Repeat the string the (implicit) input amount of times
                    #  input = 2 → STACK: ['0"D34çý×?"D34çý×?0"D34çý×?"D34çý×?']
                ?   # Output to STDOUT without trailing newline
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.