ধীরে ধীরে ক্রমবর্ধমান কুইন


30

একটি কুইন তৈরি করুন।

সহজ মনে হচ্ছে? আচ্ছা এই কুইনটিকে অবশ্যই তার প্রথম অক্ষরটি আউটপুট করতে হবে, যা তারপরে এটির দ্বিতীয় অক্ষর এবং আউটপুট দেয়।

এইভাবে কুইনটিকে কয়েক প্রজন্মের দুটি কপি আউটপুট করা উচিত।

উদাহরণ: আপনার কোড হতে দেয় x। এটি চালানো আউটপুট করা উচিত x + x[:1]। ফলস্বরূপ প্রোগ্রাম চালানো উচিত আউটপুট x + x[:2]এবং আরও ...

যদি আপনার কোডটি ছিল তবে এটি foobarচালানো উচিত আউটপুট foobarf। এটি চলমান আউটপুট করা উচিত foobarfo। এবং এই ধরণের অনুসরণ করে আরও অনেক কিছু:

foobar
foobarf
foobarfo
foobarfoo
foobarfoob
foobarfooba
foobarfoobar
foobarfoobarf

আপনার প্রোগ্রামটি অবশ্যই 2 বাইটের বেশি হতে হবে এবং প্রতিটি পুনরাবৃত্তির জন্য নিজস্ব কোডের কেবল একটি অতিরিক্ত অক্ষর আউটপুট করতে হবে।


3
আমি সন্দেহ করি যে বেশিরভাগ ভাষায় এই চ্যালেঞ্জটি অসম্ভব, প্রদত্ত উত্স কোডটি ডিফল্টরূপে নিষিদ্ধ করার কারণে।
janrjan জোহানসেন

12
@ এরজান জোহেনসেন এবং তারপরে ডেনিস দেখিয়েছেন
রড

2
@ রড ওয়েল আমি সবই বলিনি , কেবলমাত্র অনেক / বেশিরভাগ ভাষায় কোডের স্বেচ্ছাসেবী বিভাজনগুলি এমনভাবে যুক্ত করার কোনও স্পষ্ট উপায় নেই যে (1) এটি একটি সিনট্যাক্স ত্রুটি দেয় না (2) প্রোগ্রাম পরিবর্তন সনাক্ত করতে পারে।
janrjan জোহানসেন

3
যেহেতু এটি একটি খুব অস্বাভাবিক কুইন, তাই কি এখনও সাধারণ কুইন লুফোলগুলি বঞ্চিত করা হয়?
ড্র্যাকোনিস

উত্তর:


15

Zsh ,110 108 100 বাইট

a=`<&0`<<''<<<t;b=${a:0:50};printf $b$b${a:0:-50}
a=`<&0`<<''<<<t;b=${a:0:50};printf $b$b${a:0:-50}

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

সুতরাং এটি সম্ভব।

ব্যাখ্যা

a=`<&0`<<''<<<t;       # Set A to everything following this line, until eof or
                       #   an empty line (which never happens before eof) encountered.
                       # A "t" is appended to prevent automatic trimming of newlines.
b=${a:0:50};           # Set B to the first line.
printf $b$b${a:0:-50}  # Print two copies of B and
                       #   A with 50 trailing characters removed.


11

আর, 289 বাইট

s<-c("s<-", "i=get0('i',ifnotfound=0)+1;p=paste0(s,substr(get0('p',ifnotfound=s),1,i),collapse='');cat(s[1]);dput(s);cat(paste0(s[2],substr(p,1,i)))#")
i=get0('i',ifnotfound=0)+1;p=paste0(s,substr(get0('p',ifnotfound=s),1,i),collapse='');cat(s[1]);dput(s);cat(paste0(s[2],substr(p,1,i)))#

অনুপ্রেরণার জন্য এই কুইনে কৃতিত্ব । শুধুমাত্র পূর্বের কুইনটি চালানো একই আর পরিবেশে চালিত হলে কাজ করে ।


একটি ব্যাখ্যা আসন্ন হবে ... আমি এটি এখনও 288 বার পরীক্ষা করে দেখিনি, তবে আমি মোটামুটিভাবে নিশ্চিত হয়েছি যে এটি সঠিক
জিউস্পে

এটি সম্ভবত 289 বাইট হওয়া উচিত যেহেতু কোয়াইন সেখানে একটি নতুন লাইন চরিত্র যুক্ত করে তবে যাইহোক এটি দুর্দান্ত আপনি এটি সমাধান করেছেন!
আইকিউইক 143

আহ, ঠিক বলেছেন, catবুদ্ধিমান নতুন লাইন যুক্ত করুন।
জিউসেপে

তবে এটি কি পুরো প্রোগ্রাম? উত্পন্ন কোড পূর্ণ প্রোগ্রাম আছে?
জিমি 23013

@ jimmy23013 যতদূর আমি বলতে পারি, এই উত্তর এবং উত্পন্ন কোডটি সম্পূর্ণ প্রোগ্রাম। সেখানে নেই mainবা যে আর মত অন্য কোন বাধ্যতামূলক গঠন এছাড়া প্রশ্ন স্পষ্টভাবে একটি পূর্ণ প্রোগ্রামের জন্য জিজ্ঞাসা করা হয় না, একটি ফাংশন তাই বা অনুরূপ করতে হবে।
স্টেডিবক্স 20

5

অ্যালিস , 29 বাইট

4P.a+80pa2*&wdt,kd&w74*,.ok@

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

মুদ্রণযোগ্য অক্ষর 0x18।

ব্যাখ্যা

সাধারণ- "বেসড ফুনজয়েড কুইনগুলির সমস্যাটি হ'ল আমরা যদি পুরো উত্স কোডটি পুনরাবৃত্তি করি তবে আমরা অতিরিক্তও পাই এবং "স্ট্রিংটি আর পুরো উত্স কোডটি covers েকে রাখে না। আমি ধরে নিয়েছি যে কারণে বিদ্যমান উত্তর gপরিবর্তে চিট-ওয়াই পদ্ধতির ব্যবহার করে।

এই উত্তরটি "বেসড পদ্ধতির ব্যবহার করে না , তবে উত্সটিতে একটি অন্তর্ভুক্ত করার পরিবর্তে "আমরা এটি রানটাইমে প্রোগ্রামটিতে লিখি। এইভাবে, "প্রোগ্রামটি প্রায়শই পুনরাবৃত্তি করা নির্বিশেষে কেবল একটিই থাকবে (কারণ আমরা কেবল প্রোগ্রামের আকারের সাথে এটি একটি নির্দিষ্ট স্থানাঙ্কে লিখি)।

এর পরে সাধারণ ধারণাটি হ'ল আমরা স্ট্যাকের উপরে পুরো সোর্স কোডের একটি উপস্থাপনা তৈরি করি তবে কোডের আকার দ্বারা নির্ধারিত লুপের দৈর্ঘ্য সহ কেবলমাত্র অক্ষরগুলির প্রথম 29 টি (অর্থাৎ প্রোগ্রামের দৈর্ঘ্য) কেবল চক্র হয়। অতএব, আমরা পরে স্বেচ্ছাচারী চরিত্রগুলি যুক্ত করতে পারি (লাইনফিড বাদে) @এবং ফলাফলটি সর্বদা মূল প্রোগ্রামটির একটি চক্রবৃত্ত পুনরাবৃত্তি হবে, উত্সের চেয়ে এক অক্ষর দীর্ঘ।

4P   Push 4! = 24. This is the code point of the unprintable, which we're 
     using as a placeholder for the quote.
.a+  Duplicate it and add 10, to get 34 = '"'.
80p  Write '"' to cell (8,0), i.e. where the first unprintable is.
    Placeholder, becomes " by the time we get here, and pushes the code
     points of the entire program to the stack. However, since we're already
     a good bit into the program, the order will be messed up: the bottom
     of the stack starts at the 24 (the unprintable) followed by all 
     characters after it (including those from extraneous repetitions). Then 
     on top we have the characters that come in front of the `"`. 
     So if the initial program has structure AB, then any valid program has
     the form ABC (where C is a cyclic repetition of the initial program),
     and the stack ends up holding BCA. We don't care about C, except to
     determine how big the program is. So the first thing we need to do is
     bring B to the top, so that we've got the initial program on top of
     the stack:
a2*  Push 10*2 = 20.
&w   Run the following section 21 times, which is the length of B.

  dt,  Pull up the value at the bottom of the stack.

k    End of loop.
d&w  Run the following section D+1 times, where D is the length of ABC.

  74*  Push 28, one less than the number of characters in AB.
  ,    Pull up the 29th stack element, which is the next character to print.
  .o   Print a copy of that character.

k    End of loop.
@    Terminate the program.

দুর্দান্ত সমাধান। আমি ব্যাখ্যা পছন্দ।
আইকিউিক 143

4

পার্ল 5 , 83 বাইট (চূড়ান্ত নিউলাইন সহ)

$_=q($/=$;;$_="\$_=q($_);eval
__END__
".<DATA>;print$_,/(.).{82}\z/s);eval
__END__

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

ভাল অল ' __DATA__টোকেন কোনও পার্ল প্রোগ্রামে একটি স্বেচ্ছাসেবী স্ট্রিং যুক্ত করা সহজ করে তোলে, যা মূল প্রোগ্রামটি <DATA>ফাইল হ্যান্ডেলের মাধ্যমে অ্যাক্সেস করতে পারে (এবং প্রকৃতপক্ষে ব্যবহার করে __END__, যা __DATA__দুটি অতিরিক্ত বাইট সংরক্ষণ না করে পিছনের সামঞ্জস্যের জন্য একই কাজ করে ) ।

মনে রাখবেন যে এই প্রোগ্রামটি তার নিজস্ব উত্স কোডটি পড়ে না , তবে কেবলমাত্র অতিরিক্ত ইনপুট ডেটা __END__টোকেনের পরে এর উত্সে যুক্ত হয়েছে । বাস্তবে, __END__টোকেন এবং এর পরে সমস্ত কিছু ইনপুটটির শেষে শেষ হওয়া স্ট্রিং আক্ষরিকের মতো কাজ করে।

আরও মনে রাখবেন, অনুমানটি ঠিক পূরণের জন্য এই প্রোগ্রামটি অবশ্যই একটি নতুন লাইনে শেষ হবে। যদি এটি না হয়, নতুন লাইনটি আসলে দ্বিতীয়ভাবে পরে স্বয়ংক্রিয়ভাবে সংযুক্ত হয়ে __END__যায়, তবে তারপরে প্রথম পুনরাবৃত্তির আউটপুট কোড প্লাসের সাথে তার প্রথম বাইটের সাথে ঠিক সমান হবে না।


2

বেফুঞ্জ -98 , 30 বাইট

0>:#;0g:840#;+*#1-#,_$a3*%0g,@

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

বেফঞ্জ -৮৮ ব্যবহার করার চেষ্টা করুন যা একটি স্পেস টার্মিনেটেড কুইন ব্যবহার করে যা কতগুলি অক্ষরকে আউটপুট করা হয়েছে তাও গণনা করে। তবে gকমান্ড ব্যবহার করে ।


আপনি প্রথম লাইনে উল্লেখ করতে চাইতে পারেন যে এটি প্রতিযোগিতা / প্রতারণা নয়, কেবল এটি অন্যথায় প্রাপ্ত কোনও ডাউনভিটকে নিরুৎসাহিত করার জন্য।
কুইন্টোপিয়া

2

পিএইচপি, 146 বাইট

ob_start(function($s){return($u=substr($s,0,73)).$u.substr($s,0,-72);})?>ob_start(function($s){return($u=substr($s,0,73)).$u.substr($s,0,-72);})?>

-rকমান্ড লাইন ব্যবহার করে এটি চালানো উচিত ।


অনলাইনে চেষ্টা করে দেখলে কাজ হবে বলে মনে হয় না ! , এটি কেবল একটি সাধারণ কুইন।
janrjan জোহানসেন

@ আরজানজাহানসেন আপনার এটি চালানো উচিত php -r 'command'
জিমি 23013

গাহ, এটি কাজ করতে পারে না। টিআইও মনে হয় কেবল -r যুক্তি উপেক্ষা করবে।
janrjan জোহানসেন


আহা। আমি অবশ্যই কিছু ফিরে ভুল বুঝতে হবে। এখন আমি এটি পিএইচপি-র সাথে ভাষা সেটিং হিসাবেও কাজ করতে পেরেছি ।
janrjan জোহানসেন

2

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

803X4+kw.'.q}͍}͍}͍}͍}͍}͍}͍}͍}͍::l͍5X-:}-$:l͍{-1--@

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

অ্যালিসের উত্তর হিসাবে অনুরূপ পন্থা ব্যবহার করে: প্রতিবিম্বিতভাবে কোডটিতে স্ট্রিং "কমান্ডটি লিখে দেয় যাতে কেবলমাত্র একটি থাকে। মূল প্রোগ্রামটি পুনরুদ্ধার করতে আরও কতগুলি স্ট্রিং এবং স্ট্যাক ম্যানিপুলেশন রয়েছে, আরও কতগুলি অতিরিক্ত বাইট প্রয়োজন, এবং প্রয়োজনীয় কুকুরগুলি মুদ্রণ করে rest

ক্রম ইন-মেমোরি স্ট্রিং উপস্থাপনা rotates তাই কাছাকাছি যে 803X4+kwপ্রদর্শিত পরিবর্তে শেষে শুরুতে অবস্থান কারণে "সেখানে বিশ্রী সংখ্যার একটি অনেক গনা না করেও এই অপারেশন পরিচালনার জন্য একটি সহজ উপায় নয় ।

মূল প্রোগ্রামটি 61১ বাইটের হলেও এর স্ট্রিংয়ের দৈর্ঘ্য কেবল ৫০, যা এটি নির্মাণ করা সহজ 5Xএবং এটি কেবল কাকতালীয় বিষয় ছিল যে সমস্ত প্রয়োজনীয় কার্যকারিতা থাকার পরে এটি প্যাড আউট করার দরকার নেই (উদাহরণস্বরূপ একটি দৈর্ঘ্য 49 প্রোগ্রাম সহজ হবে) যেমন সঙ্কেতাক্ষরে লিখা 50প্যাডিং এক বাইট একটি আক্ষরিক এনকোড চেয়ে সঙ্গে 49, যখন 51যেমন এনকোড করা হবে 5X3+বা 53, নিজস্ব অতিরিক্ত বাইট জন্য অ্যাকাউন্ট করা)।

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