একটি প্রায় কুইন তৈরি করুন


12

আমি একটি বন্ধুকে প্রায় একটি কাজ করে এমন একটি কুইন দিয়ে তাকে বোকা বানাতে চেয়েছিলাম , তবে opালু এবং opালু হয়ে গেছে।

এমন একটি প্রোগ্রাম তৈরি করুন যা রান করার পরে প্রোগ্রামটি আউটপুট দেবে, তবে একটি অক্ষর বন্ধ থাকবে। হয় একটি চরিত্র যুক্ত করা যায়, মুছে ফেলা যায় বা উভয়ই (একটি চরিত্রের পরিবর্তন হয়)। তবে কেবল একটি চরিত্র।

আপনার স্কোর হবে (length of your program) / floor(sqrt(number of times the program almost quines))( / 0অনন্ত কোথায় )

number of times the program almost quinesকেবলমাত্র স্টাডাউটে একটি চরিত্র পরিবর্তন করার সময় আপনার প্রোগ্রামটি কতবার চালিত হয়। আপনার প্রোগ্রাম ইনপুট গ্রহণ করতে পারে না। এটি ইতিমধ্যে মুদ্রিত কোনও প্রোগ্রাম মুদ্রণও করতে পারে না।

আপনি পূর্বে যে অক্ষরটি যুক্ত করেছেন সেগুলিও যোগ করতে পারেন না বা একই সূচক থেকে কোনও অক্ষর মুছে ফেলতে পারেন। উদাহরণস্বরূপ, আপনি যদি 1আগে যুক্ত করে থাকেন এবং আপনি 1আবার যুক্ত করেন তবে সেখানেই number of times the program almost quinesথেমে যায়। আপনি যদি প্রথম চরিত্রটি সরিয়ে ফেলেন তবে আপনি প্রথম অক্ষরটি আবার সরাতে পারবেন না। আপনি যদি তৃতীয় অক্ষরটিকে ক এ পরিবর্তন করেন তবে আপনি 2একটি যুক্ত 2বা তৃতীয় অক্ষর অপসারণ করতে পারবেন না ।


কি কুইন?
Abr001am

@ আগওয়া 1001 একটি কুইন একটি প্রোগ্রাম যা নিজেই মুদ্রণ করে।

উত্তর:


7

সিজোম, 0.000884

{_,6/[{64md}6*](124+\+'�f++`"1$~"}""1$~

এখানে, code কোড বিন্দু 128 সহ অপ্রিনিত অক্ষরকে বোঝায় online এটি অনলাইনে চেষ্টা করুন।

ধারণা

এই পদ্ধতির মাধ্যমে ইউ + 4000000 এবং ইউ + 7FFFFFFF এর মধ্যে কোড পয়েন্টগুলি অনুসরণ করে কোড ব্লক অনুসরণকারী কোড পয়েন্ট সহ সমস্ত ইউসিএস অক্ষর (মূল স্পেসিফিকেশন) যুক্ত করা হয়।

আমরা ইউটিএফ -8 নির্বাচন করি , যা 6 টি বাইট স্ট্রিং ব্যবহার করে এই অক্ষরগুলির প্রতিটি এনকোড করে:

1111110u₂     10vvvvvv₂     10wwwwww₂     10xxxxxx₂     10yyyyyy₂     10zzzzzz₂

252 + u       128 + vvvvvv  128 + wwwwww  128 + xxxxxx  128 + yyyyyy  128 + zzzzzz

সুতরাং, আমরা বেসের 64 টিতে এর 6 টি কমপক্ষে উল্লেখযোগ্য সংখ্যার গণনা করে 252 সর্বাধিক তাৎপর্যের সাথে যুক্ত করে 128 টি এবং বাকীগুলির সাথে 128 যোগ করে এই পরিসরটির নবম অক্ষরটি এনকোড করতে পারি ।

স্কোরিং

এখানে 2 ** 31 = 2,147,483,6486 বাইট ইউটিএফ -8 অক্ষর রয়েছে এবং মূল কোডটির দৈর্ঘ্য 39, তাই স্কোরটি 39 / floor(2 ** 15.5) = 39 / 46340 = 0.0008416055243849806

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

{                                }""    e# Push the code block and an empty string.
                                    1$~ e# Execute a copy of the code block.
 _,                                     e# Push the length of the string.
   6/                                   e# Divide by 6 to get the number of chars.
      {64md}6*                          e# Perform modular division six times.
     [        ]                         e# Collect the results in an array.
               (124+\+                  e# Add 124 to the first element.
                      '�f+              e# Add 128 to all and cast each to Char.
                          +             e# Concatenate the strings.
                           `            e# Push a string representation.
                            "1$~"       e# Push '1$~' to complete the quine.

আমি আপনার প্রথম (নিম্ন) স্কোরের কারণে এটি গ্রহণ করছি । আমি এটি অনুমতি দেব।

6

সিজেএম, 46 বাইটস, 65504 অ্যাড, 65505 ডেল, স্কোর 0.127424

{`-2<_0c#)!{'#/~(_)\+\+S+]'#*}*W<"
}_~"e# 
}_~

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

মূল ফর্মটি একটি স্ট্যান্ডার্ড জেনারেলাইজড সিজেএম কুইন। "প্রায় কোয়াইন" করার e#জন্য, কুইনের ব্লকের শেষে একটি মন্তব্য রয়েছে, যেখানে আমি কোডটি প্রভাবিত না করে অবাধে অক্ষরগুলি যুক্ত করতে পারি can দ্রষ্টব্য যে মন্তব্যে প্রাথমিকভাবে একটি একক স্থান রয়েছে।

প্রোগ্রামটি এএসসিআইআই মান অনুসারে শুরু করে এবং তারপরে মন্তব্যের সামনের অংশে অক্ষর যুক্ত করতে থাকে !। সিজেমের চরিত্রের কোডগুলি 2 16 এর পরে প্রায় মোড়ানো হয় তাই কোনও এক সময় এটি একটি নাল বাইট যোগ করবে। এটি হয়ে গেলে, মন্তব্যটি খালি না হওয়া পর্যন্ত প্রোগ্রামটি মন্তব্যটির শেষে থেকে বাইটগুলি সরিয়ে শুরু করে (যেমন মুছে ফেলা চরিত্রের অবস্থান সবসময় আলাদা)।


5

সিজেম, 19 বাইটস, 65536 অ্যাড, 0 ডেল, স্কোর 0.074219

"a"{\)_)++`\"_~"}_~

সহজ আরও ভাল।

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