বর্ধমান আকারে প্রোগ্রাম উত্পন্ন করুন


21

এই চ্যালেঞ্জে আপনি এমন একটি প্রোগ্রাম লিখবেন যা একটি প্রোগ্রামকে আউটপুট করে দেয় যা মূল প্রোগ্রামের দ্বিগুণ । Outputted প্রোগ্রাম আউটপুট একটি নতুন প্রোগ্রাম একটি প্রোগ্রাম দ্বিগুণ করা উচিত তার দৈর্ঘ্য।

উদাহরণ

যদি আমার প্রোগ্রামটি হয় a:

< a
> aa

< aa
> aaaa

< aaaa
> aaaaaaaa

বিধি

  • কোন কুইন বিল্ট-ইন নেই
  • আসল প্রোগ্রামটি কমপক্ষে একটি বাইট হতে হবে
  • ক্রমটি তাত্ত্বিকভাবে অসীমভাবে কাজ করা উচিত
  • আপনার প্রোগ্রামটি কোনও কিছু থেকে পড়ার অনুমতি নেই (ফাইল, স্টডিও)

আপনার স্কোরটি মূল প্রোগ্রামটির আকার।


কোডটি থাকা অবস্থায় নিজেই পড়ে / অ্যাক্সেস করে ফাইল অ্যাক্সেস সম্পর্কে কীভাবে?
কনর ও'ব্রায়ান

@ CᴏɴᴏʀO'Bʀɪᴇɴ এটি অনুমোদিত নয় কারণ এটি আমার বিশ্বাসের বিধি লঙ্ঘন করবে।
ডাউনওয়েট

2
@ ডোᴡɴɢᴏᴀᴛ কোইন বিধিগুলি ট্যাগ উইকি দ্বারা সুপারিশ করা হয় তবে স্বয়ংক্রিয়ভাবে প্রয়োগ হয় না
মার্টিন এেন্ডার


উত্তর:


12

সিজেম, 10 বাইট

{"_~"+_}_~

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

{"_~" e# Generalised quine framework, leaves the block and the string "_~"
      e# on the stack. 
+     e# Prepend the block to the string.
_     e# Duplicate the resulting array.
}_~

গল্ফস্ক্রিপ্ট মারা যায় নি! ইলমারির একটি অনুরূপ প্রশ্নের উত্তর রয়েছে যা এটি 10 ​​টি বাইটে করে।
জাস্টিন

8

জাভাস্ক্রিপ্ট, 62 61 37 বাইট


সহায়তার জন্য @ দো'কে ধন্যবাদ!


আসল [৩ by বাইট]:

f=_=>'f='+'_'.repeat((10+f).length)+f

শিশু [by৪ বাইট]:

f=______________________________________=>'f='+'_'.repeat((10+f).length)+f

নাতনি [148 বাইট]:

f=________________________________________________________________________________________________________________=>'f='+'_'.repeat((10+f).length)+f


বিকল্প (কনসোল মুদ্রণ সহ, এবং একটি সম্পূর্ণ প্রোগ্রাম হিসাবে):

আসল [by১ বাইট]:

f=_=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()

শিশু [122 বাইট]:

f=______________________________________________________________=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()

নাতি [244 বাইট]:

f=________________________________________________________________________________________________________________________________________________________________________________________=>console.log(`f=${'_'.repeat((0+f).length+5)+f};f()`);f()



কিভাবে এটা কাজ করে!

1.   f=_=>   ফাংশন চ হিসাবে সংজ্ঞায়িত করুনconsole.log(...)

2.   ;f()   রান ফাংশন চ।

৩.   (ফাংশনে চ)  

  • console.log(...)   নিম্নলিখিত মুদ্রণ করুন:

    • f=   আক্ষরিক পাঠ্য "f ="
    • ${'_'.repeat((0+f).length+5)   "_" f এর দৈর্ঘ্যের জন্য পুনরাবৃত্তি, এফ এর স্ট্রিংকরণের অন্তর্ভুক্ত নয় এমন অক্ষরের জন্য অ্যাকাউন্টে পরিবর্তিত
    • +f}   ফাংশন এর স্ট্রিংকরণ
    • ;f()   আক্ষরিক পাঠ্য "; চ ()"

নোট

  • console.logপরিবর্তে প্রয়োজনীয় alertকারণ alertসত্যিকারের দীর্ঘ স্ট্রিং (কমপক্ষে আমার মেশিন / ব্রাউজার কনফিগারেশনে) ভাল খেলছে না বলে মনে হচ্ছে
  • _এর ফাংশন f এর (অব্যবহৃত) প্যারামিটারের নাম ঢোকানো হয়, তা নিশ্চিত করার জন্য তারা চ এর stringification অন্তর্ভুক্ত করা হয়।
  • console.logদ্বিতীয়টির উপরের প্রথম সমাধানটির মূল উন্নতি (এর হাত থেকে মুক্তি থেকে পৃথক হয়ে ): স্ট্রিংয়ে ফেলে দেওয়ার 10পরিবর্তে ফাংশনে যুক্ত করা 0একে আরও দীর্ঘ করে তোলে, পরে দৈর্ঘ্যে 1 যোগ করার প্রয়োজনীয়তা বাদ দিয়ে একটি বাইট সংরক্ষণ করে।

0+fফাংশনটিকে একটি স্ট্রিংয়ে ফেলে দেওয়ার জন্যও কাজ করা উচিত
ডাউনগোট

48 বাইট:(f=_=>`(f=${'_'.repeat((0+f).length+5)+f})()`)()
ডাউনগোট

@ দো ᴡɴɢᴏᴀᴛ ভুলে গেছেন যে ফলাফলটি ফিরিয়ে দেওয়া সাধারণত গ্রহণযোগ্য। আপডেট হবে।
সমৃদ্ধ

@ ডু- আসলে, যেহেতু ফাংশন হিসাবে উত্তরগুলি লেখার জন্য সাধারণত গৃহীত হয়, সমাধানের জন্য এমনকি ফাংশনটি কল করতে হবে?
সমৃদ্ধ

অবশ্যই, আপনি করতে পারে
ডাউনগোট

6

মিনকোলাং 0.15 , 19 14 বাইট

"66*2-rIDdr$O.

মূল , শিশু , নাতি

ব্যাখ্যা

"66*2-      $O.    Standard quine formulation

      r            Reverse stack
       I           Push length of stack
        D          Pop n and duplicate top of stack n times
         d         Duplicate top of stack
          r        Reverse stack

এর মধ্যে বিটটি rদ্বিগুণযোগ্য মানদণ্ডটি পূরণ করার জন্য শেষ সময়টিকে নকল করে। ."স্টপ প্রোগ্রাম" চরিত্রটি হ'ল, তাই শেষের দিকে অনেকগুলি পিরিয়ডগুলি উপস্থিত হওয়া ছাড়া কিছুই করে না।



2

পাইথন 3, 51 বাইট

x=r"print('x=r\"'+x+'\"'+';exec(x*2)');";exec(x*2)

এর মধ্যে একটি পেছনের নিউলাইন অন্তর্ভুক্ত রয়েছে।

কোন ফলাফল:

x=r"print('x=r\"'+x+'\"'+';exec(x*2)');";exec(x*2)
x=r"print('x=r\"'+x+'\"'+';exec(x*2)');";exec(x*2)

2

গল্ফস্ক্রিপ্ট, 11 বাইট

{: ".~"]}.~

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

উত্স কোড কীভাবে কাজ করে

{: ".~"]}.~

{       }    Define and push a code block.
         .~  Push a copy and execute it.
 :           Save the code block in the space character.
             Every subsequent space will now execute the code block.
   ".~"      Push that string.
       ]     Wrap the entire stack in an array.

যদি উপরের উত্স কোডটি একবার কার্যকর করা হয় তবে স্ট্যাকটি শেষ হবে

["" {: ".~"]} ".~"]

যেখানে শুরুতে খালি স্ট্রিংটি স্ট্যাকের প্রাথমিক অবস্থার সাথে মিলিত হয় (খালি ইনপুট)।

উত্স কোডের দুটি অনুলিপি একটি চূড়ান্ত অবস্থা ছেড়ে যাবে

[["" {: ".~"]} ".~"] {: ".~"]} ".~"]

ইত্যাদি।

এরপরে কি হবে

উত্স কোড কার্যকর করার পরে, দোভাষী নিম্নলিখিত কাজগুলি করেন:

  1. এটি পুরো স্ট্যাকটিকে একটি অ্যারেতে আবৃত করে এবং স্ট্যাকের মধ্যে অ্যারেটিকে ধাক্কা দেয়।

    উত্স কোডের একক অনুলির জন্য, স্ট্যাকটিতে এখন রয়েছে

    ["" {: ".~"]} ".~"] [["" {: ".~"]} ".~"]]
    
  2. এটি putsমোড়ানো স্ট্যাকটি মুদ্রণের উদ্দেশ্যে এবং তার পরে লাইনফিডের মাধ্যমে কার্যকর করা হয়েছিল।

    putsহিসাবে সংজ্ঞায়িত করা হয় {print n print}, সুতরাং এটি নিম্নলিখিত করে।

    1. printস্ট্যাকের মোড়কযুক্ত অনুলিপিটি এটি পরীক্ষা না করে মুদ্রণ করে (অর্থাত্ এটিকে স্ট্রিং উপস্থাপনায় রূপান্তর না করে)। এটি প্রেরণ

      {: ".~"]}.~
      

      STDOUT এ এবং স্ট্যাকের শীর্ষ থেকে স্ট্যাক অনুলিপি পপ করে।

      স্ট্যাক এখন ধারণ করে

      ["" {: ".~"]} ".~"]
      
    2. আমরা বর্ণিত কোড ব্লক কার্যকর করে exec

      :["" {: ".~"]} ".~"]স্থান অক্ষর সংরক্ষণ করে শুরু হয় , তারপরে ".~"নিজেকে ধাক্কা দেয় এবং ]একটি অ্যারেতে স্ট্যাকটি জড়িয়ে দেয়।

    3. n একটি একক লাইনফিড সমন্বিত একটি স্ট্রিং পুশ করে।

      স্ট্যাক এখন ধারণ করে

      [["" {: ".~"]} ".~"] ".~"] "\n"
      
    4. আবার একবার মৃত্যুদন্ড কার্যকর করা হয়। তবে, আমরা এটি প্রথমবারের জন্য কল করলে এটির নতুন সংজ্ঞা দেওয়া হয়েছিল এবং এখন কোনও অ্যারে রয়েছে, কোনও কোড ব্লক নয়।

      আসলে, এটি ঠেলাঠেলি ["" {: ".~"]} ".~"]হিসাবে স্ট্যাক ছেড়ে

      [["" {: ".~"]} ".~"] ".~"] "\n" ["" {: ".~"]} ".~"]
      
    5. শেষ printঅবধি, প্রেরণ, প্রেরণ ছাড়াই শীর্ষস্থানীয় স্ট্যাক আইটেমটি মুদ্রণ করে

      {: ".~"]}.~
      

      STDOUT।


1

26, 26 অক্ষর / 36 বাইট

⟮ô`\u27ee⦃ᶈ0}\u27ef
`ď2)⟯

Try it here (Firefox only).

মনে রাখবেন এখানে একটি ট্রেলিং নিউলাইন রয়েছে।

ব্যাখ্যা

স্ট্যান্ডার্ড কুইন: ⟮ⒸⅩ222+ᶈ0

পরিবর্তন:

  • ôশেষ ফলাফলের পরিবর্তে কুইন্সের সমস্ত ফলাফল আউটপুট করতে ফাংশনটি ব্যবহার করুন (অন্তর্নিহিত আউটপুট ব্যবহার করে)
  • \u27ee⦃ᶈ0}\u27ef\nপরবর্তী অনুলিপি ব্লকগুলির সাথে বিরোধগুলি প্রতিরোধ করতে অনুলিপি ব্লকটি ব্যবহার করুন এবং বন্ধ করুন ।
  • ď2দুবার স্ট্রিং পুনরাবৃত্তি করতে ব্যবহার করুন ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.