চেইন প্রোগ্রাম


26

চ্যালেঞ্জ

এই চ্যালেঞ্জে, আপনি প্রথম প্রোগ্রাম, পি 1 লিখবেন, প্রোগ্রামগুলির একটি অসীম অনুক্রমের, যা চলমান পি এন আউটপুট / প্রোগ্রাম উত্পন্ন করে এন এন 1 1 । প্রথম এন> = 2 প্রোগ্রামগুলিকে একত্রীকরণ করার সময়, ক্রমটি আউটপুট হওয়া উচিত n

উদাহরণ

ধরা যাক প্রথম 4 টি প্রোগ্রাম হ'ল:

p1 p2 p3 p4

যদি আমি p1চালাতাম তবে এটির ফলাফল হওয়া উচিত:

p2

যদি আমি p1p2চালাতাম তবে এটির ফলাফল হওয়া উচিত:

2

যদি আমি চালাতে p1p2p3p4পারি তবে এটির ফলাফল হওয়া উচিত:

4

যদি আমি চালনা p4করি তবে এটি ক্রমানুসারে পরবর্তী প্রোগ্রাম উত্পন্ন করা উচিত:

p5

স্কোরিং

আপনার স্কোরটি প্রথম 10প্রোগ্রামগুলির বাইট গণনা ।


অনুক্রমগুলি কি p1p2p3...সর্বদা পি 1 থেকে পিএন পর্যন্ত থাকবে ?
আমেরিকার হরিণবিশেষ

@ মুস হ্যাঁ, এটি সর্বদা পি 1 থেকে পিএন পর্যন্ত থাকবে।
ডাউনগোট

5
এটি একটি আকর্ষণীয় সমস্যা। প্রোগ্রাম ক্রম যথেষ্ট সহজ; শৃঙ্খল শক্ত হয়।
কনর ও'ব্রায়েন

ফাইল অ্যাক্সেস অনুমোদিত?
লিন

@ মরিস হ্যাঁ তবে ফাইলটির সামগ্রীর ও নামের বাইট গণনাটি এটি ব্যবহৃত প্রতিটি প্রোগ্রামের মোট বাইট গণনাতে অবশ্যই গণনা করতে হবে
ডাউনওয়েট

উত্তর:


49

পাইথ, 12

P1:

l"1

P2: 1

P3: 1

ইত্যাদি ..

p1p2p3:

l"111 

আউটপুট: 3

ব্যাখ্যা:

l        length
 "1      string "1"

প্রথম দৌড়ে, এটি একটি একক অক্ষরের স্ট্রিংয়ের দৈর্ঘ্যকে আউটপুট করে 1। এটি 1আবারও আউটপুট করে একটি বৈধ পাইথ প্রোগ্রাম হতে পারে । সুতরাং, পিএন + 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 + একটি একক প্রোগ্রামের দৈর্ঘ্যের সাথে তুলনা করি। যদি বর্তমান প্রোগ্রামটির আকারটি এই মানটির চেয়ে ছোট হয় তবে উত্সটি মুদ্রিত হওয়ার চেয়ে, যা পরবর্তী প্রোগ্রাম, পি 2, এবং আমরা প্রস্থান করি। প্রতিটি পুনরাবৃত্তি কেবল একটি কুইন। যখন এগুলির বেশ কয়েকটি একসাথে রাখা হয়, শর্তসাপেক্ষে ব্যর্থ হয় এবং আমরা এক প্রোগ্রামের দৈর্ঘ্য দ্বারা বিভক্ত সংক্ষিপ্ত প্রোগ্রামটির দৈর্ঘ্য মুদ্রণ করি, যা সংক্ষিপ্ত প্রোগ্রামগুলির সংখ্যা, এন।


একটি ভিন্ন পদ্ধতি (আমার চেয়ে) ব্যবহারের জন্য +1। এটি আমি যে ধরণের সৃজনশীল উত্তর আশা করেছিলাম।
আমেরিকার হরিণবিশেষ

লুয়ার জন্য +1 করুন এবং কুলার চয়ন করুন, যদি অন্য উত্তরের চেয়ে আরও দীর্ঘ পদ্ধতি: P
বিড়াল

হাহাহা আপনাকে ধন্যবাদ, আমি বেশ গর্বিত যে আমি একটি অ-গল্ফিং এবং মোটামুটি
শব্দভাণ্ডার সহকারে এটি করতে পেরেছি

4

Vitsy , 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

Vitsy , 14 বাইট

পাইথ এবং জल्फ জবাবগুলির মতো, আমি স্ট্রিংগুলি ম্যাপ করছি। পার্থক্যটি হ'ল আমি সর্বদা সঠিক দৈর্ঘ্য পাই তা নিশ্চিত করার জন্য আমি লাইন মোড়ানো বৈশিষ্ট্যগুলি ব্যবহার করি।

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 বাইট (একটি ছাপ ছাড়াই রয়েছে):

5Ql-.

হেক্স ডাম্প:

35516c2d2e7f

এই প্রোগ্রামটি মুদ্রণ 1: এটি অনলাইনে চেষ্টা করুন

বাকি প্রোগ্রামগুলি সমস্ত 1, একটি বৈধ প্রোগ্রাম যা পাইথ উত্তরের মতোই নিজেকে মুদ্রণ করে। মূল প্রোগ্রামটি তার উত্স কোড বিয়োগ 5 এর দৈর্ঘ্য মুদ্রণ করে এবং অবিলম্বে সমাপ্ত হয়। 1এর সাথে যুক্ত করা প্রতিটি সময় সোর্স কোডের দৈর্ঘ্য 1 বাইট বৃদ্ধি করে, তবে কখনও কার্যকর হয় না।


2

Jolf , 14 বাইট

এখানে চেষ্টা করুন!

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

মৃত্যুদন্ড কার্যকর করা হলে, এই মুদ্রণ 1। এইভাবে p2 = 1,। p2ফলন কার্যকর করা হচ্ছে 1। সুতরাং, সবার জন্য N > 1,pN = 1

পালন p1p2: a-1q41। এটি স্থানান্তর করে:

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

যেহেতু প্রথম মুদ্রণের পরে অন্তর্নিহিত মুদ্রণ অক্ষম করা হয়েছে 2, উত্স কোড বিয়োগ 4 এর দৈর্ঘ্য হিসাবে এই মুদ্রণগুলি প্রিন্ট করা হয় And


2

রুবি, 318 বাইট

পি 1 :

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

প্রতিটি পৃথক প্রোগ্রাম পি আমি আউটপুট এই এক লাইন quine: _="_=%p;puts _%%_";puts _%_

আপনি যখন পি 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

জাভাস্ক্রিপ্ট ES6, স্কোর 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

পিএইচপি, 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();"

সামান্য golfed সংস্করণ পিএইচপি quine কৌশল বিস্তারিত ব্যবহার করে: http://10types.co.uk/the-lab/a-minimal-php-quine/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.