এন-লেভেল আওোবোরস কুইন


11

এই 128 টি ভাষার কুইন ওউরোবোরাস (এমন একটি প্রোগ্রাম যা অন্য ভাষায় একটি প্রোগ্রামকে আউটপুট দেয়, যা অন্য প্রোগ্রামে একটি প্রোগ্রামকে আউটপুট দেয়, (পরে 125 টি ভাষা), যা মূল প্রোগ্রামটি আউটপুট করে) বেশ চিত্তাকর্ষক। তবে দুর্ভাগ্যক্রমে, এটির একটি স্থির সংখ্যা পুনরাবৃত্তি রয়েছে।

এমন একটি প্রোগ্রাম লিখুন যা কোনও প্রোগ্রামকে আউটপুট করে (অপরিহার্যভাবে অন্য ভাষায় নয়, তবে এটি হতে পারে), যা কোনও প্রোগ্রামকে আউটপুট দেয়, যা কোনও প্রোগ্রামকে আউটপুট দেয়, ইত্যাদি, যা এন পুনরাবৃত্তির পরে প্রথমবারের জন্য মূল প্রোগ্রামকে আউটপুট করে (অর্থাত্ মধ্যবর্তী নয়) প্রোগ্রামটি মূল হিসাবে একই হওয়া উচিত, কারণ অন্যথায় একটি কোয়াইন যা তার ইনপুট উপেক্ষা করে তা কাজ করবে), যেখানে এন ইনপুট হিসাবে প্রদত্ত একটি অ-নেতিবাচক পূর্ণসংখ্যা। ইনপুটটি মূল উত্স কোডে কেবল একটি সংখ্যা হতে পারে না (যেমন x = <the value of n>আপনার প্রোগ্রামের শুরুতে রেখে দেওয়া ), এটি নিম্নলিখিতগুলির মধ্যে একটি হতে হবে:

  1. কমান্ড-লাইন আর্গুমেন্ট হিসাবে পাস করেছে
  2. স্ট্যান্ডার্ড ইনপুট থেকে পড়ুন
  3. কোনও ফাংশনে আর্গুমেন্ট হিসাবে পাস হয়েছে, যা নতুন প্রোগ্রামটি ফেরত / আউটপুট দেয়।

ওউরবোরাসগুলির মধ্যবর্তী পর্যায়ের জন্য, আপনার প্রোগ্রামটি হয় পুরোপুরি কার্যকরী প্রোগ্রাম হতে পারে, বা কোনও যুক্তি ছাড়াই একটি ফাংশন হতে পারে, যাকে ডাকা হলে, পরেরটি ফিরে আসবে / আউটপুট দেয়।

আপনি উত্স ফাইল থেকে নিজেই পড়তে পারবেন না, বা কোনও কুইনের মতো বিল্টিন ব্যবহার করতে পারবেন না (আমি মনে করি না যে এটি করার মতো কোনও আছে, তবে সেখানে থাকতে পারে)

পরিষ্কার হওয়ার জন্য, যদি n = 0, প্রোগ্রামটির নিজস্ব উত্স কোড আউটপুট করা উচিত।

যদি n = 1, প্রোগ্রামটির একটি আলাদা প্রোগ্রাম আউটপুট করা উচিত, যা মূল উত্স কোডকে আউটপুট করে।

এবং আরও ...

সবচেয়ে কম বাইট জিতেছে!

সম্পাদনা:

আমি লিখেছি উচিত "ouroboros মধ্যে অন্তর্বর্তী পর্যায়ে জন্য, আপনার প্রোগ্রাম হয় একটি সম্পূর্ণরূপে ক্রিয়াশীল প্রোগ্রাম হতে পারে কোন ইনপুট দিয়ে , বা কোন যুক্তি দিয়ে একটি ফাংশন"। যদি আপনার প্রোগ্রামটি পরেরটিটিকে শৃঙ্খলে আউটপুট করে দেয়, তবে ইনপুটটির জন্য অপেক্ষা করুন, এটি ভাল, তবে আপনার প্রোগ্রামটির n এর মূল মান হওয়া উচিত নয়।



আমরা কি 1 সূচক এন করতে পারি? সুতরাং এন = 1 এর অর্থ মুদ্রণ উত্স কোড, এন = 2 অর্থ মুদ্রণ কোড যা উত্স কোড প্রিন্ট করবে ইত্যাদি
মেয়াদোত্তীর্ণ ডেটা

1
পুনরাবৃত্তি সংস্করণগুলিতে এখনও প্রাথমিক ইনপুট থাকবে? সুতরাং যাক আমার প্রথম ইনপুট 3 হয়, এবং আমি প্রোগ্রাম আউটপুট এটি চালান। এখনও কি কোনও ইনপুট 3 থাকবে, না কোনও ইনপুট? যদি কোনও ইনপুট না থাকে তবে আমি অনুমান করি যে getInput()কোনও ইনপুট সরবরাহ না করে এমন কিছু ব্যবহার করা হলে আমাদের এটি পরিচালনা করতে হবে । অথবা আমরা কি ইনপুটটিকে এমন কিছু বলতে পারি যা পরে পুনরাবৃত্তির জন্য অব্যবহৃত কিছু, যা এর জন্য ত্রুটিগুলি রোধ করতে পারে getInput()? আকা বর্তমান পাইথন উত্তর বৈধ?
কেভিন ক্রুইজসেন

আমি সন্দেহ করি যে আমাদের যা করতে বলা হয়েছিল তা হল একটি পূর্ণসংখ্যা দেওয়া, এমন nএকটি প্রোগ্রাম আউটপুট করুন যা nপুনরাবৃত্তির একটি ওউরোবোরাস কুইনের "প্রাথমিক প্রোগ্রাম" এবং আমাদের উত্তরটি পুনরাবৃত্তির একটি হিসাবে গণনা করা উচিত নয় n। এটা কি সঠিক?
এরিক আউটগল্ফার

@ কেভিন ক্রুইজসেন আমার সম্পর্কে সম্ভবত এটি আরও পরিষ্কার হওয়া উচিত ছিল। মধ্যবর্তী পর্যায়ে কোনও ফর্ম ইনপুট থাকতে পারে না। আমার ধারণা প্রোগ্রামটি যদি পরবর্তী একটিকে আউটপুট দেয় এবং তারপরে ইনপুটটির জন্য অপেক্ষা করে, তবে তা ঠিক থাকবে।
লিও টেনেনবুম

উত্তর:


5

05 এ বি 1 ই , 28 বাইট

-4 বাইট + কেভিন ক্রুইজসেনকে ধন্যবাদ স্থির করে

"34çìD«s<©di®ì"34çìD«s<©di®ì

এটি অনলাইন চেষ্টা করুন!


ব্যাখ্যা

কোডটির সামনের অংশে মুদ্রণ করতে অবশিষ্ট নম্বর যুক্ত করে এটি কাজ করে যার অর্থ এটি কোনও স্ট্রুপে একইভাবে যুক্ত হয় যা কোনও ইনপুট হবে। "0" ইনপুট এর বেস ক্ষেত্রে এটি সামনের 0 টি সংযুক্ত করে না।


dধনাত্মক ( >=0) এর পরিবর্তে অ-নেতিবাচক ( >0)। সমস্যাটি হ'ল dএটিকে পপিং না করে চেক করার জন্য আপনাকে প্রথমে এটির সদৃশ করতে হবে তবে এটি পুনরাবৃত্তিতেও বাতিল করতে হবে 0"quinsting", অন্যথায় এটি অনুলিপিটিকে আউটপুট দেবে 0। :(
কেভিন ক্রুইজসেন

"34çìD«s<©di®ì"34çìD«s<©di®ì২৮ বাইটের জন্য সম্ভবত (যা এখনও আপনার লক্ষ্যযুক্ত পদ্ধতির খুব কাছাকাছি রয়েছে)? (আমি আপ্লিকেশন থেকে পুনরাবৃত্তি 0"34çìD«s<Ddiì"34çìD«s<Ddiìআউটপুটগুলির জন্য আপনার বর্তমান সংস্করণকে ভয় করছি ..)-1D
কেভিন ক্রুইজসেন

4

রুনিক এনেক্যান্টমেন্টস , 39 বাইট

"3X4+kSql1=c*?S:1-}C'LA-}!i:0)2*?~!'´@

এটি অনলাইন চেষ্টা করুন!

হতে চান 4 বাইট খাটো ইনপুট যেখানে কম বা সমান যদি একই কৌশল ব্যবহার করে 05AB1E চেয়ে 10। তবে আমাদের যেমন ইচ্ছামত বৃহত্তর মূল্যবোধ সমর্থন করা দরকার, ততই আরও জটিল হয়।

সংখ্যাগত মান nসামনে স্থাপন করা ব্যবহার আক্ষরিক একটি ক্রমাগত নম্বর হিসাবে পার্স পরার ´"3X4+kSqবেসিক কুইন কোড। যদি কোনও মান সামনে না উপস্থিত থাকে তবে স্ট্যাকের দৈর্ঘ্য কেবল 1 (কুইন) হবে অন্যথায় 2 l1=d*?সেখান থেকে কীভাবে জিনিসগুলি পরিচালনা করবেন তা নির্ধারণ করতে দিন।

  • যদি কোনও মান থাকে, S:1-}'LA2+-}রান হয়: শীর্ষে মানটি অদলবদল করুন, 1 টি বিয়োগ করুন, এটির সদৃশ করুন, স্ট্যাকের নীচে একটি অনুলিপি রেখে , সেই মান বারের 100 এর লগ 10 পান (যার ফলে মানটির নিজস্ব চরিত্রের দৈর্ঘ্য, এবং আরও 1 এর জন্য ´), স্ট্রিংয়ের শেষে থেকে অনেকগুলি অক্ষর সরিয়ে ফেলুন (কার্যকরভাবে শেষের বাইরে কাটা, যেখানে এটির প্রয়োজন হয় না এবং কারণ এটির ভুল মূল্য রয়েছে)। Cএর চেয়ে এক বাইট কম 2+এবং একই মান ফলাফল।

  • যদি মান না থাকে তবে ইনপুট থেকে একটি পড়ুন।

নির্বিশেষে: :0)2*?সদৃশ এবং শূন্যের সাথে তুলনা করুন।

  • যদি নন-শূন্য ধাক্কা দেয় ´

  • শূন্য হলে মানটি পপ করুন। আমরা এর !পরিবর্তে ব্যবহার করে প্রতারণা করতে পারি 2?এবং একটি বাইট সংরক্ষণ করতে পারি কারণ যখন ´প্রথম বাইটটি এটি সম্পাদন করার চেষ্টা করে তখন এটি অ-সংখ্যাসূচক এবং তত্ক্ষণাত একই অবস্থানে নম্বর মোডের বাইরে চলে যায়।

পুরো স্ট্যাক শীর্ষ থেকে নীচে মুদ্রণ করুন।


3

জাভা 10, 145 বাইট

n->{Long N=n;var s="n->{Long N=%s;var s=%c%s%2$c;return s.format(s,N>0?N-1+%2$cL%2$c:%2$cn%2$c,34,s);}";return s.format(s,N>0?N-1+"L":"n",34,s);}

এটি অনলাইনে ব্যবহার করে দেখুন এবং কিছু পুনরাবৃত্তির ফলাফলগুলি দেখুন

ব্যাখ্যা:

ব্যাখ্যা:

  • var sঅবিন্যস্ত সোর্স কোড রয়েছে
  • %s এই স্ট্রিংটি নিজের মধ্যে রাখার জন্য ব্যবহৃত হয় s.format(...)
  • %c, %1$cএবং 34ডাবল-কোট ফর্ম্যাট করতে ব্যবহৃত হয়
  • s.format(s,34,s) সব একসাথে রাখে

চ্যালেঞ্জ অংশ:

প্রথম ল্যাম্বদা ফাংশনটি longপ্যারামিটার হিসাবে একটি ইনপুট নেয় ।

  • এটি Long N=n;প্রথম পুনরাবৃত্তিতে পরিবর্তনশীলতে সেট করা আছে । অথবা Long N=%s;পরবর্তী পুনরাবৃত্তির জন্য।
  • ত্রৈমাসিক চেকটি N>0?N-1+"L":"n"এটিকে %sমান দিয়ে পূরণ করবে N-1, Lএটি দীর্ঘ হিসাবে সংযোজন করা হয়েছে এবং এটি 1 এর চেয়ে বড় হলে স্ট্রিংতে রূপান্তর করবে %sযদি পরিবর্তে 0 হয় (প্রাথমিক ইনপুট ছিল বা এটি ইন্টারকাইন- এর শেষ পুনরাবৃত্তি - ' লুপ '), এটি প্রাথমিক পরিবর্তে এটি পূরণ করবে ।NN0%sn

মহাকাশটি বলেছে যে মধ্যবর্তী আউটপুটগুলিকে একটি সম্পূর্ণ প্রোগ্রাম বা কোনও যুক্তি ছাড়াই একটি ফাংশন থাকতে হবে
অজ্ঞতার

এম্বেডিমেন্টফ অজ্ঞানতা আমি জানি, এটাই আমার আছে। প্রথম ল্যাম্বদা ফাংশনটি একটি longফাংশন-প্যারামিটার নেয় এবং অন্যান্য ল্যাম্বদা ফাংশনগুলি একটি অব্যবহৃত Voidপ্যারামিটার নেয় , যা আমি সর্বদা চ্যালেঞ্জগুলির জন্য কোনও ইনপুট না নেওয়ার জন্যও ব্যবহার করি কারণ v->1 বাইটের চেয়ে কম হয় ()->
কেভিন ক্রুইজসেন

2

হাস্কেল , 1954 164 বাইট

main=putStr(x++show x++"\na=")>>(getLine:cycle[pure$show$a-1])!!a>>=putStr
x="main=putStr(x++show x++\"\\na=\")>>(getLine:cycle[pure$show$a-1])!!a>>=putStr\nx="
a=0

এটি অনলাইন চেষ্টা করুন!

এটি একটি দুর্দান্ত সরল কুইন কৌশল ব্যবহার করে। আমরা এটি একটি পরিবর্তনশীল aযা সংখ্যায় সেট করা আছে তা সংশোধন করি । যদি সেই সংখ্যাটি শূন্য হয় (যা এটি শুরুতে রয়েছে) আমরা ইনপুট নিই এবং aইনপুট নম্বরটিতে সেট করে আমাদের উত্স আউটপুট দেয়। যদি aশূন্য আমরা আউটপুট সঙ্গে আমাদের উৎস নয় aকম এক সেট। এই aউত্সটি উত্স উত্স আউটপুট করার আগে শূন্যের নিচে গণনা করা হয়।



2

আর , 92 বাইট

f=function(n=-1){gsub("\\s","",paste("f=",sub("-?\\d+",n-1,paste(deparse(f),collapse=""))))}

এটি অনলাইন চেষ্টা করুন!

যদি deparseপ্রতারণা বলে মনে করা হয়, তবে এখানে একটি বিকল্প রয়েছে:

আর , 108 বাইট

function(n=-1){s="function(n=%d){s=%s%s%2$s;sprintf(s,n-1,intToUtf8(34),s)}";sprintf(s,n-1,intToUtf8(34),s)}

এটি অনলাইন চেষ্টা করুন!


1

পার্ল 6 , 44 বাইট

<say '<',S{\d+}=get||0-1,'>~~.EVAL'>~~.EVAL

এটি অনলাইন চেষ্টা করুন!

স্ট্যান্ডার্ড ইনপুট এর মাধ্যমে ইনপুট নেয় এবং একটি প্রোগ্রাম দেয় যেখানে কেবলমাত্র পরিবর্তন হওয়া প্রথম সংখ্যা the প্রতিটি পরবর্তী প্রোগ্রামের পরে সেই সংখ্যা হ্রাস বাদে একই প্রোগ্রামটি আউটপুট দেবে।


1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 112 বাইট

void f(int n=-1){var s="void f(int n={2}){{var s={0}{1}{0};Write(s,(char)34,s,n-1);}}";Write(s,(char)34,s,n-1);}

@ নিক কেনেডিকে ধন্যবাদ দিয়ে প্রচুর বাইট সংরক্ষণ করা হয়েছে!

এটি অনলাইন চেষ্টা করুন!


মধ্যবর্তী আউটপুটগুলি একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন নয় যা একক যুক্তি গ্রহণ করে। এছাড়াও আমি মনে করি আপনি কিছু আছে nগুলি করে হওয়া উচিত lসে। কীভাবে tio.run/##Sy7WTS7O/P@/…
নিক কেনেডি

1

পাইথন 3.8 (প্রাক রিলিজ) , 60 56 55 53 বাইট

lambda n=-1,s='lambda n=%d,s=%r:s%%(~-n,s)':s%(~-n,s)

এটি অনলাইন চেষ্টা করুন!

-2 বাইট জো কিংকে ধন্যবাদ জানায়

53 বাইট সংস্করণ হিসাবে, পাইথন 2 এবং পাইথন 3 তেও কাজ করে।


মধ্যবর্তী ফাংশনটি একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন বলে মনে হচ্ছে না যা কোনও যুক্তিই গ্রহণ করে না।
নিক কেনেডি

ওয়ালরাস অপারেটরটি :=পাইথনের একটি স্বাগত সংযোজন, এটি অবশ্যই নিশ্চিত।
mbomb007

"ওউরোবোরাসের মধ্যবর্তী পর্যায়ের জন্য, আপনার প্রোগ্রামটি হয় পুরোপুরি কার্যকরী প্রোগ্রাম হতে পারে, বা কোনও যুক্তি ছাড়াই এমন একটি ফাংশন হতে পারে , যাকে ডাকা হলে, পরেরটি ফিরে আসবে / আউটপুট দেয়" "
mbomb007

@ নিক কেনেডি অনুমানটি মেনে চলার জন্য আপডেট হয়েছে এবং কাকতালীয়ভাবে 4 বাইট সংরক্ষণ করেছে।
নেতিবাচক সাত

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