चैनिंग कार्यक्रम


26

चुनौती

इस चुनौती में, आप कार्यक्रमों के अनंत अनुक्रम का पहला कार्यक्रम, पी 1 लिख रहे होंगे , जिसमें चल रहा है पी एन आउटपुट / प्रोग्राम उत्पन्न करता है पी एन + 1 । जब पहले n> = 2 कार्यक्रमों को समाप्‍त करते हैं, तो अनुक्रम आउटपुट होना चाहिए n

उदाहरण

मान लीजिए कि पहले 4 कार्यक्रम हैं:

p1 p2 p3 p4

अगर मैं चलाने के लिए p1, यह उत्पादन करना चाहिए:

p2

अगर मैं चलाने के लिए p1p2, यह उत्पादन करना चाहिए:

2

अगर मैं p1p2p3p4इसे चलाने के लिए उत्पादन करना चाहिए:

4

अगर मुझे दौड़ना था p4, तो इसे अगले कार्यक्रम को क्रम में उत्पन्न करना चाहिए:

p5

स्कोरिंग

आपका स्कोर पहले 10कार्यक्रमों की बाइट गिनती है ।


क्या अनुक्रम p1p2p3...हमेशा p1 से pn तक होंगे ?
मूस

@ नमस्कार हां, यह हमेशा p1 से pn तक होगा।
डाउनगैट

5
यह एक दिलचस्प समस्या है। कार्यक्रम अनुक्रम काफी आसान है; पीछा करना कठिन है।
कॉनर ओ'ब्रायन

क्या फ़ाइलों तक पहुँचने की अनुमति है?
लिन

@Mauris हाँ लेकिन फाइल की सामग्री के और नाम के बाइट गिनती प्रत्येक कार्यक्रम में यह प्रयोग किया जाता है के लिए कुल बाइट गिनती में गिना जाना चाहिए।
Downgoat

जवाबों:


49

अजगर, १२

p1:

l"1

p2: 1

p3: 1

आदि..

p1p2p3:

l"111 

आउटपुट: 3

स्पष्टीकरण:

l        length
 "1      string "1"

पहली बार चलाने पर, यह एक एकल चरित्र स्ट्रिंग की लंबाई आउटपुट 1। यह भी एक मान्य Pyth प्रोग्राम होता है, 1फिर से आउटपुट करता है । इसलिए, pn + 1 हमेशा होता है 1। जब प्रोग्राम जंजीर होते हैं, p1तो जंजीर कार्यक्रमों की लंबाई को आउटपुट करता है, जो कि होगा n


9

लुआ, 950 900 बाइट्स

s=io.open(arg[0]):read()if#s<95 then print(s)do return end end print(#s/90) do return end;

Ungolfed:

s=io.open(arg[0]):read'*a'
if #s < 96 then 
    print(s)
    do return end 
end 
print(#s/90) 
do return end;

स्पष्टीकरण:

पहली पंक्ति कार्यक्रम के पूरे स्रोत को पकड़ती है। फिर हम पूरे कार्यक्रम की लंबाई की तुलना 1 + एक एकल कार्यक्रम की लंबाई से करते हैं। यदि वर्तमान प्रोग्राम का आकार इस मान से छोटा है, तो स्रोत मुद्रित होने से, जो कि अगला प्रोग्राम है, P2, और हम बाहर निकलते हैं। प्रत्येक पुनरावृत्ति मात्र एक क्वीन है। जब इनमें से कई को एक साथ रखा जाता है, तो सशर्त विफल हो जाता है, और हम एक कार्यक्रम की लंबाई से विभाजित कार्यक्रम की लंबाई को प्रिंट करते हैं, जो कि संक्षिप्त कार्यक्रमों की संख्या है, एन।


एक अलग विधि (मेरा से) का उपयोग करने के लिए +1। यह रचनात्मक उत्तर का प्रकार है जिसकी मैं उम्मीद कर रहा था।
मॉस

Lua के लिए +1, और कूलर का चयन, अगर अन्य उत्तरों की तुलना में अधिक लंबा तरीका: P
cat

हाहा धन्यवाद, मुझे काफी गर्व था कि मैं एक गैर-गोल्फिंग और काफी वाचाल भाषा के साथ ऐसा करने में कामयाब रहा :)
निकोलाई97

4

विटसी , 19 बाइट्स

यहां स्ट्रिंग्स से नहीं, बल्कि मेथड ट्रिक्स का इस्तेमाल करके।

p1

1ml1-\+N
1

p2

1

p3

1

इत्यादि।

नीचे स्पष्टीकरण:

1ml1-\+N
1m       Execute the first index of lines (the bit with the ones)
  l1-    Get the length minus 1.
     \+  Add them all up.
       N Output as number.

1        Push one to the stack.

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


4

विटसी , 14 बाइट्स

Pyth और Jolf के उत्तर के समान, मैं स्ट्रिंग्स मैप कर रहा हूं। एकमात्र अंतर यह है कि मैं लाइन रैपिंग सुविधाओं का उपयोग यह सुनिश्चित करने के लिए करता हूं कि मुझे हमेशा सही लंबाई मिले।

p1

'l3-N

p2

1

1 को किसी एक नंबर से बदलें ।

p3 और इसी तरह इस पैटर्न से मेल खाते हैं, और आप इसे तब तक कर सकते हैं Integer.MAX_VALUE, जब तक कि भाषा का पूर्णांक प्रतिबंध नहीं।

स्पष्टीकरण:

'l3-N
'     Wrap around the line until finding another '. Since no ' is found before the
      End of the line, it wraps around.
 l    Get the length of the stack.
  3-  Subtract three.
    N Output as number.

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


4

गंभीरता से, 15 बाइट्स

पहला कार्यक्रम, 6 बाइट्स (एक unprintable):

5Ql-.

हेक्स डंप:

35516c2d2e7f

यह कार्यक्रम प्रिंट करता है 1: इसे ऑनलाइन आज़माएं

बाकी कार्यक्रम सभी हैं 1, एक वैध कार्यक्रम जो खुद को पाइथ के उत्तर की तरह प्रिंट करता है। मूल कार्यक्रम अपने स्रोत कोड की लंबाई 5 घटाता है और तुरंत समाप्त करता है। 1अंत में संलग्न सोर्स कोड की लंबाई हर बार 1 बाइट बढ़ाती है, लेकिन कभी भी निष्पादित नहीं होती है।


2

जोल्फ , 14 बाइट्स

यहाँ यह कोशिश करो!

a-lq4
a      print
  lq   the length of the source code
 -  4  minus 4

जब निष्पादित किया जाता है, तो यह प्रिंट करता है 1। इस प्रकार, p2 = 1p2पैदावार में बढ़ोतरी 1। इसलिए सभी के लिए, , ।N > 1pN = 1

का निरीक्षण करें p1p2: a-1q41। यह ट्रांसपाइल्स:

alert(sub(length("a-lq41"),4));
1;

चूंकि पहले प्रिंट के बाद निहित मुद्रण अक्षम होता है, इसलिए यह प्रिंट होता है 2, क्योंकि स्रोत कोड की लंबाई माइनस 4 है 2. और पर और पर और।


2

रूबी, 318 बाइट्स

पृष्ठ 1 :

x=DATA.readlines.size
_="_=%p;puts _%%_"
puts x>0?x+1:_%_
__END__

प्रत्येक अलग कार्यक्रम पी मैं आउटपुट इस एक पंक्ति का Quine:_="_=%p;puts _%%_";puts _%_ :।

जब आप इन quines को p 1 के अंत में जोड़ते हैं , तो वे DATAऑब्जेक्ट में लाइनों के रूप में समाप्त हो जाते हैं क्योंकि वे जादू से नीचे हैं__END__

यहाँ एक परीक्षण है:

$ ruby chain.rb                                    # running p1
_="_=%p;puts _%%_";puts _%_

$ ruby -e '_="_=%p;puts _%%_";puts _%_'            # running p2
_="_=%p;puts _%%_";puts _%_

$ ruby -e '_="_=%p;puts _%%_";puts _%_'            # running p3
_="_=%p;puts _%%_";puts _%_

$ # Concatenating p2 and p3 to p1:
$ ruby -e '_="_=%p;puts _%%_";puts _%_' >> chain.rb
$ ruby -e '_="_=%p;puts _%%_";puts _%_' >> chain.rb

$ ruby chain.rb                                    # running p1p2p3
3

दस पहले कार्यक्रमों को इस तरह दिखता है (318 बाइट्स):

x=DATA.readlines.size
_="_=%p;puts _%%_"
puts x>0?x+1:_%_
__END__
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_
_="_=%p;puts _%%_";puts _%_

1

सी #, 2099 + 7 = 2106 बाइट्स

पहला कार्यक्रम (संकलक ध्वज का उपयोग करता है /main:A):

class A{static void Main(){int a=System.Reflection.Assembly.GetEntryAssembly().GetTypes().Length;var b=@"class A{0}{{static void Main(){{var a=@""{1}"";System.Console.Write(a,{0}+1,a.Replace(""\"""",""\""\""""));}}}}";System.Console.Write(a>1?"{2}":b,0,b.Replace("\"","\"\""),a);}}

दूसरा कार्यक्रम:

class A0{static void Main(){var a=@"class A{0}{{static void Main(){{var a=@""{1}"";System.Console.Write(a,{0}+1,a.Replace(""\"""",""\""\""""));}}}}";System.Console.Write(a,0+1,a.Replace("\"","\"\""));}}

तीसरा कार्यक्रम:

class A1{static void Main(){var a=@"class A{0}{{static void Main(){{var a=@""{1}"";System.Console.Write(a,{0}+1,a.Replace(""\"""",""\""\""""));}}}}";System.Console.Write(a,1+1,a.Replace("\"","\"\""));}}

तुम्हें नया तरीका मिल गया है।


0

जावास्क्रिप्ट ईएस 6, स्कोर 483 455

कार्यक्रम 1, 77 बाइट्स:

v=1;setTimeout(_=>alert(v>1?v:'a=_=>this.v?v++:alert("a="+a+";a();");a();'));

कार्यक्रम 2 और उससे आगे, 42 बाइट्स प्रत्येक:

a=_=>this.v?v++:alert("a="+a+";a();");a();

0

PHP, 1470 बाइट्स

कार्यक्रम 1: 219 बाइट्स:

class O{public$n=1;function __destruct(){echo($n=$this->n)>1?$n:'if(!$o->n++)echo str_replace(chr(9),$a=aWYoISRvLT5uKyspZWNobyBzdHJfcmVwbGFjZShjaHIoOSksJGE9CSxiYXNlNjRfZGVjb2RlKCRhKSk7,base64_decode($a));';}}$o=new O();

प्रोगम 2 और 139 बाइट्स से परे:

if(!$o->n++)echo str_replace(chr(9),$a=aWYoISRvLT5uKyspZWNobyBzdHJfcmVwbGFjZShjaHIoOSksJGE9CSxiYXNlNjRfZGVjb2RlKCRhKSk7,base64_decode($a));

जैसे उपयोग करें:

php -r "class O{public$n=1;function __destruct(){echo($n=$this->n)>1?$n:'if(!$o->n++)echo str_replace(chr(9),$a=aWYoISRvLT5uKyspZWNobyBzdHJfcmVwbGFjZShjaHIoOSksJGE9CSxiYXNlNjRfZGVjb2RlKCRhKSk7,base64_decode($a));';}}$o=new O();"

यहाँ थोड़ा विस्तृत संस्करण php quine तकनीक का उपयोग किया गया है: http ://10types.co.uk/the-lab/a-minimal-php-quine/

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