আপনার গড় রানাকে 1-আপ করুন


34

একটি 1-আপ কুইন একটি প্রোগ্রাম যা একটি কোয়েলের সাথে খুব মিল। একটি প্রধান পার্থক্য হ'ল একবার মুদ্রণের পরিবর্তে, যখন প্রোগ্রামটির এন অনুলিপিগুলি সংক্ষিপ্ত করা হয়, ফলাফলটি মূল প্রোগ্রামটি এন + 1 বার মুদ্রণ করে ।

উদাহরণ

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

Abc123  ->  Abc123Abc123
Abc123Abc123  ->  Abc123Abc123Abc123
Abc123Abc123Abc123  -> Abc123Abc123Abc123Abc123

চ্যালেঞ্জ

আপনার চ্যালেঞ্জটি হ'ল যে কোনও ভাষায় স্বল্পতম বৈধ 1-আপ কুইন তৈরি করা। সাধারণ কুইন বিধি প্রযোজ্য, তাই আপনি নাও করতে পারেন:

  • খালি প্রোগ্রাম জমা দিন।
  • প্রত্যক্ষ বা অপ্রত্যক্ষভাবে 1 উত্স কোড পড়ুন।
  • কুইনিং বিল্ট-ইন ব্যবহার করুন।

এটি কোড-গল্ফ, তাই বাইট জেতে সংক্ষিপ্ততম কোড।

1 এটিতে আপনার প্রোগ্রামের অংশ হিসাবে একটি হার্ড-কোডেড স্ট্রিং বা কোড ব্লক ব্যবহার করা অন্তর্ভুক্ত নয়।


2
nকিছু ডাটা টাইপ বিধিনিষেধ (সর্বাধিক পূর্ণসংখ্যার আকার ইত্যাদি) দ্বারা সীমাবদ্ধ থাকলে কি ঠিক আছে ?
লুইস মেন্ডো

2
@ লুইস মেন্ডো আমি মনে করি এটি ঠিক আছে, যতক্ষণ না আপনি যুক্তিসঙ্গত সংখ্যার পুনরাবৃত্তি (100, সম্ভবত) সমর্থন করতে পারেন।
ETH প্রোডাকশনগুলি

বিল্টিন কুইনিং পদ্ধতি ব্যবহার করে উত্স কোডটির দৈর্ঘ্য পড়া কি ঠিক আছে?
কনর ও'ব্রায়েন

2
@ সিও'বিʀɪᴇɴ আমার কাছে উত্স কোডটি পাওয়ার সাথে এটি খুব সামঞ্জস্যপূর্ণ বলে মনে হচ্ছে, যেহেতু আপনি এখনও উত্স কোড সম্পর্কে তথ্য পাচ্ছেন। সুতরাং না।
ইটিএইচ প্রডাকশনগুলি

উত্তর:


13

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

{`'.~'+:n}.~

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

ব্যাখ্যা

এটি স্ট্যান্ডার্ড গল্ফস্ক্রিপ্ট কোয়েনের ধারণাগুলি একত্রিত করে:

{'.~'}.~

এবং আমার সম্প্রতি আবিষ্কৃত কুইন :

":n`":n`

মূল ধারণাটি আবার ব্যবহার করা nযা কোয়ানের অতিরিক্ত অনুলিপি পেতে প্রোগ্রামের শেষে ছাপানো হয়েছে। যেহেতু ভেরিয়েবলটি নির্ধারিত হয় তা পরবর্তী কপিগুলিতে আবার হয়ে গেলে কোনও পরিবর্তন হয় না, এটি কেবল একটি অনুলিপি যুক্ত করবে। কোডটির একটি বিচ্ছেদ এখানে রয়েছে:

{        # Standard quine framework. This pushes the block, duplicates it and runs the
         # second copy, such that it can process the first copy to create a quine.
  `      # Convert the block to its string representation.
  '.~'+  # Append the string '.~' to make a complete quine. This is simply left on the
         # stack to be printed at the end.
  :n     # Store the string in n such that one more copy is printed at the end.
}.~

12

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

{: ".~"][}.~

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

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

{: ".~"][}.~

{        }    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 everything up to the last [ in an array.
        [     Set a new array marker.

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

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

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

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

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

তিনটি অনুলিপি একটি চূড়ান্ত রাষ্ট্র

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

ইত্যাদি।

এরপরে কি হবে

উত্স কোডটি কার্যকর করার পরে, দোভাষী নিম্নলিখিতটি করেন।

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

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

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

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

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

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

      (উত্স কোড) থেকে STDOUT এবং স্ট্যাকের অনুলিপি স্ট্যাকের শীর্ষ থেকে from

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

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

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

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

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

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

      আসলে, এটি ধাক্কা দেয় [{: ".~"][} ".~"], স্ট্যাকটি রেখে যায়

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

      {: ".~"][}.~
      

      STDOUT এ, উত্স কোডটি 1-আপ করে।


11

জাভাস্ক্রিপ্ট ES6 (REPL), 55 বাইট

var a=-~a;$=_=>`var a=-~a;$=${$};$();`.repeat(a+1);$();

@ ব্যবহারকারী 81655 এর জন্য 2 বাইট সংরক্ষণ করা!

ব্যাখ্যা

এখানে স্ট্যান্ডার্ড কোয়েন ফ্রেমওয়ার্ক:

$=_=>`$=${$};$()`;$()

আপনি জমা দেওয়ার ভিতরে এই কাঠামোটি দেখতে সক্ষম হবেন। নীচে আরও ব্যাখ্যা।


var a=-~a;

এটি কাউন্টার, ১ এ ডিফল্ট করা হয়েছে Bas

$=_=>`var a=-~a;$=${$};$();`.repeat(a+1);$();

এটি কুইন পার্ট। আমরা কাউন্টার + 1 দ্বারা মূলত কুইন স্ট্রিংটি পুনরাবৃত্তি করি। পরবর্তী ফাংশন কলগুলি আউটপুটকে ওভাররাইড করবে।


এটি কেবলমাত্র আমার হতে পারে তবে এটি কোনও কিছুই মুদ্রণ করবে বলে মনে হয় না। (জেএসফিডেল ব্যবহার করে পরীক্ষিত, যদি এটি গুরুত্বপূর্ণ?)
16'16

আহ, আপনার ফায়ারফক্স কনসোল ব্যবহার করা উচিত। (এবং পুনরায় সেট করতে প্রতিটি রানের পরে পুনরায় লোড করুন a)।
মামা ফান রোল

আমি আপনার প্রয়োজন মনে করি নাvar
সাইয়েস

না, আমি এটি করি কারণ একটি প্রাথমিকভাবে সংজ্ঞায়িত। Var ব্যবহার করা আমাদের এটির সাথে কাজ করতে দেয়।
মামা ফান রোল

7

সিজেম, 14 বাইট

{"_~"]-2>_o}_~

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

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

{"_~"]-2>_o}_~

{          }    Define a code block and push it on the stack.
            _~  Push and execute a copy of it.
 "_~"           Push that string.
     ]          Wrap the entire stack in an array.
      -2>       Discard all but the last two elements (block and string).
         _o     Push and print a copy of that array.

প্রোগ্রামটির শেষ অনুলিপি কার্যকর হওয়ার পরে, ব্লক এবং স্ট্রিং রয়েছে এমন অ্যারে এখনও স্ট্যাকের মধ্যে রয়েছে তাই এটি স্পষ্টভাবে মুদ্রিত করা হয়।


4

গ্রোভি, 83 বাইট

s="s=%c%s%c;f={printf(s,34,s,34,10)};f()%cf()//";f={printf(s,34,s,34,10)};f()
f()//

এখানে একটি এম্বেড রয়েছে এবং কোনও নতুন ট্র্যাক লেবেল নেই। এই মুদ্রণ:

s="s=%c%s%c;f={printf(s,34,s,34,10)};f()%cf()//";f={printf(s,34,s,34,10)};f()
f()//s="s=%c%s%c;f={printf(s,34,s,34,10)};f()%cf()//";f={printf(s,34,s,34,10)};f()
f()//

ফাংশনটি f()কুইনের একটি অনুলিপি মুদ্রণ করে। প্রাথমিক প্রোগ্রামটি এটিকে দু'বার কল করে। সংযুক্ত কোডের প্রথম লাইনটি একটি মন্তব্যে পরিণত হয় এবং কেবলমাত্র দ্বিতীয় কলটি f()কার্যকর হয়।


4

রুবি, 43 বাইট

1;s="1;s=%p;$><<s%%s*n=2-0";$><<s%s*n=2-0

নিজেই, এটি নিজে 2-0বা 2সময়গুলি মুদ্রণ করে । যখন নিজের অন্য অনুলিপিটিতে জড়িত থাকে তখন চূড়ান্ত মুদ্রণ বিবৃতিটি মনে হয় $><<s%s*n=2-01, যার অর্থ এটি একবারে আউটপুট হয়ে যায় ( 01অষ্টাল 1 হওয়ায় )। সুতরাং কেবল দু'বার মুদ্রণের চূড়ান্ত অনুলিপি, অন্যরা একবার মুদ্রণ করে।

এতে ইনলাইন অ্যাসাইনমেন্টটি কেবল nক্রিয়াকলাপের ক্রমটি সঠিকভাবে কাজ করা; রাষ্ট্র আসলে একটি অনুলিপি থেকে অন্য অনুলিপিটিতে পাস করা হয় না।


4

নোডজেএস, 63 61 60 55 বাইট

আপনি যদি একাধিক কনসোল বার্তাগুলিকে নিউলাইন দ্বারা পৃথক করা বিবেচনা করেন (কোনও আরপিএল প্রয়োজন নেই) তবে এটি জাভাস্ক্রিপ্টে (ES6) এও কাজ করবে RE

@ দেব-নালকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে

(f=_=>(t=_=>console.log(`(f=${f})()`)||(_=>t))(t()))()

নোট করুন যে কোডের শেষে একটি নতুন লাইন রয়েছে।


এটি একটি আকর্ষণীয় ছিল, অবশ্যই এখন পর্যন্ত এই সাইটের জন্য আমার প্রিয় একটি of

আমি মোটামুটি আত্মবিশ্বাসী এটি আরও বেশি গল্ফ করা যাবে না। (সম্ভবত স্পাইডারমনকির printকাজ ...)

ব্যাখ্যা

//FIRST ITERATION
            console.log(`(f=${f})()`)                   //logs to the console a quine of the source code using function f's toString()
                                     ||                 //causes the expression to evaluate to the second part, since console.log's return value is falsy
                                       (_=>t)           //a function that returns function t when called
       t=_=>                                            //defines function t to be the code above. When called, t will log a quine and then return a function that returns t.
      (                                      )(t())     //call t twice. (one call is done via the t() as an ignored parameter) This will print the quine twice.
 f=_=>                                                  //define f as the above code.
(                                                  )()  //call function f with no arguments. this results in a function returning t. (the result of calling t once)
                                                        //this newline is to compensate for console.log's behavior of adding a newline to its output
//SECOND ITERATION
(                                                  )    //call the function that returns t that was returned from the first iteration. This expression will result in whatever that function returns, which is t.
 f=_=>(t=_=>console.log(`(f=${f})()`)||(_=>t))(t())     //this part evaluates to a function, which is passed as a parameter to the function that returns t, that ignores its parameter.
                                                    ()  //call whatever the last expression returned, which is the function t, with no parameters. This will print the quine once.
                                                        //this call will result in a function returning t, just like from the first iteration, so we can add on more iterations at will.

আমি এটি প্রথম সানগ্লাস লাগানোর মতো দেখতে দেখতে পছন্দ করি। (f=_=আমি কিছুটা ক্লান্তও হতে পারি।
বেন লেগিগেরো

2

রুবি, 55 বাইট

n||=2;s="n||=2;s=%p;$><<(s%%s)*n;n=1;";$><<(s%s)*n;n=1;

এখানে খুব আকর্ষণীয় কিছু নয়, এটি কাউন্টার সহ কেবল একটি সাধারণ রুবি কুইন।


2

জাভাস্ক্রিপ্ট (ES6), 164 বাইট

console.log((`+String.fromCharCode(96)).repeat(window.a||(a=3,5)).slice(67,-14))
console.log((`+String.fromCharCode(96)).repeat(window.a||(a=3,5)).slice(67,-14))

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


সাধারণ উদ্দেশ্যমূলক ভাষায় এটি করার জন্য অনেক প্রপস!
বেন লেগিগেরো

কমান windowকরতে this
মামা ফান রোল



1

ওয়াই

ননকম্পটিং, 6 বাইট

UCn*px

ওয়াই হ্যাডক্যানন যা আমার কিছুক্ষণ ছিল, এবং এটি আমাকে এটি লিখতে অনুপ্রাণিত করেছিল। এটি এমন চ্যালেঞ্জগুলির জন্য তৈরি করা হয়েছে যাতে ক্রম ক্রম কী এটি গুরুত্বপূর্ণ this কোডটি "নোড" অক্ষর দ্বারা লিঙ্কগুলিতে বিভক্ত। এই ক্ষেত্রে, আমাদের কোডটি নোডের সাথে দুটি চেইনে (মূলত) বসানো হয়েছে C

U  C  n* px
1  N    2

Uএকটি ট্রান্সসেন্টাল স্ট্রিং রেকর্ড করে, অর্থাত্‍, লিঙ্কগুলি বিস্তৃত। এটি অন্যটির সাথে মিলিত হওয়া অবধি রেকর্ড করে U। যদি Uস্ট্রিংয়ের শেষে কোনওটি পূরণ না হয় তবে এটি চারপাশে মোড়ানো। এছাড়াও, Uডিফল্টভাবে স্ট্রিং অন্তর্ভুক্ত করা হয়। স্ট্রিংটি রেকর্ড করার পরে, আমরা নোডে এগিয়ে যাই C, যা আমাদের কেবল পরবর্তী লিঙ্কে নিয়ে যায়।

nচেইনের সংখ্যা ঠেলে দেয়। আমাদের বেস কেসটির জন্য, এই ২ টি Kচেইনের ক্রমের জন্য চেইন রয়েছে K+2, যেমন Kনোড রয়েছে। *স্ট্রিং রিপিটেশন।pপুরো স্ট্যাকটি মুদ্রণ করে (এই ক্ষেত্রে, একটি স্ট্রিং), এবং xপ্রোগ্রামটি সমাপ্ত করে।

একটি পাঠ্যে:

UCn*px
U..... record that string
 C     next link
  n*   repeat that string twice.
    px print and terminate

UCn*pxUCn*pxUCn*px
U.....U            record string
 C                 next link
  n*               repeat that string four times (three Cs)
    px             print and terminate

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


তাহলে Uকোয়াইনিংয়ের পাশাপাশি ব্যবহারিক ব্যবহার কী হবে ? (
K কে

@ ইথ প্রডাকশনগুলি ইউ একটি স্ট্রিং ক্যাপচার করতে ব্যবহার করা যেতে পারে যা লিঙ্কগুলিকে বিস্তৃত করে, একটি লিঙ্ক ক্যাপচার এবং ব্যয় করতে সক্ষম হয় যা প্রোগ্রামটিতে ছড়িয়ে পড়ে। এবং ধন্যবাদ! : ডি
কনর ও'ব্রায়েন

1

ব্র্যাচল্যাগ , 20 বাইট

⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅

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

এই কুইন থেকে পরিবর্তিত

⊥                       Fail,
 ∨                      or
                w       print
  "⊥∨~kgjw₃w₅"          "⊥∨~kgjw₃w₅"
                 ₃      formatted
              gj        with itself;
                 ₃w₅    print it again at the end of the program if this route succeeds.

এটি যখন নিজের সাথে সংমিশ্রিত হয়, সর্বশেষ ব্যর্থ হয় এবং প্রোগ্রাম ব্যতীত প্রতিটি রুট পরের দিকে চলে যায়, একে একে চালিত করে এবং একে একে শেষের ব্যতীত w₃অতীত ব্যাকট্র্যাকিং করে w₅

⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅

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

⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅

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

⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅⊥∨"⊥∨~kgjw₃w₅"gjw₃w₅

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

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