কুইনিং, তবে উইন্ডোজ ফাইলের সাথে!


9

একটি কুইন লিখুন, যখন চালানো হয়, নিজেকে বর্তমান ডিরেক্টরিতে তৈরি করে, নিজের নামের উত্স ফাইলে। আমরা এতে উইন্ডোজ ব্যবহার করব, সুতরাং ফাইলের নাম (এবং সেইজন্য কুইন) এর অবশ্যই নিম্নলিখিত সীমাবদ্ধতা থাকতে হবে:

  • এই চরিত্রগুলির কোনওটিই নয় \ / : ? * < > |
  • 211 255 টির চেয়ে কম অক্ষর

সীমাবদ্ধতা এবং অনুমান

  • আপনার কোড অবশ্যই একটি পূর্ণ প্রোগ্রাম হতে হবে (এটি সর্বোপরি চালানো হবে)।

  • উত্স ফাইল থেকে কোনও অনুলিপি নেই।

  • আপনি ধরে নিতে পারেন যে আপনার কুইনের সাথে এর নাম হিসাবে অন্য কোনও ফাইল নেই (যেমন এটি কোয়াইন (1) উত্পাদন করবে )।

  • ত্রুটিগুলি অনুমোদিত হয় (যতক্ষণ না তারা উত্স কোডের মধ্যে না

এই , বাইটস মধ্যে সংক্ষিপ্ততম কোড জয়!

সম্পাদন করা

সম্ভবত আমি পরিষ্কার ছিলাম না, কুইনের নামের ফাইলটি আসলে কুইনটি ধারণ করে। আমার খারাপ।


প্রোগ্রামটিতে অস-অক্ষরগুলির সীমাবদ্ধতাগুলি কী? (উইন্ডোজে, সম্ভবত এটি সম্ভবত উইন্ডোজের কোন ভাষা সংস্করণ ইনস্টল করা আছে তার উপর নির্ভর করে; আমি সঠিক নিয়মগুলি এবং সেগুলি সময়ের সাথে পরিবর্তিত হয়েছে কিনা তা ভুলে যাই))

211 বাইটের চেয়ে কম কেন? এটাই এক ধরনের নির্বিচারে নিষেধাজ্ঞার ...
mbomb007

@ mbomb007 সর্বোচ্চ ফাইলের আকার, আমি বিশ্বাস করি।
অ্যাডিসন ক্র্যাম্প

1
@VoteToClose এটা 255 এর stackoverflow.com/a/265782/2415524
mbomb007

@ mbomb007 টাইপো, সম্ভবত?
অ্যাডিসন ক্র্যাম্প

উত্তর:


6

ভিটসি, 10 27 বাইট

'rddd++&"rdd8++a[v}v1-D);].

যদি : অনুমতি দেওয়া হয় তবে আমি এটিকে 11 বাইটে সংক্ষিপ্ত করতে পারতাম। :(

ব্যাখ্যা:

'rddd++&"rdd8++a[v}v1-D);].
'                           Capture all instructions as a string until encountering
                              ' again, looping if necessary.
 r                          Reverse the current stack (output is top-down).
  ddd++                     Push char literal ' to the stack.
       &                    Push a new stack to the stack stack.
        "                   Same as ', but " specific.
         r                  Reverse the current stack.
          dd8++             Push char literal " to the stack.
               a            Push 10 to the stack.
                [        ]  Loop forever.
                 v          Capture the top value as a variable.
                  }         Take the bottom item of the stack and put it on the top.
                   v        Dump the variable to the stack.
                    1-      Subtract 1.
                      D     Duplicate the top item.
                       );   Pop n; if n is 0, exit the loop.
               a[v v1-D);]  This is a makeshift for loop with 10 iterations.
                          . Pop the top stack as n, and the second stack as o. 
                              Write a file called "n" with the contents of "o".

দুটি স্ট্যাকের শেষে এক হবে। কিছু জাভা সংস্করণে, এটি FileNotFoundExceptionবিভিন্ন প্রয়োগের কারণে একটি নিক্ষেপ করতে পারেFileInputStream ক্লাসের ।

সম্পাদনার আগে পূর্ববর্তী উত্তর:

&'rddd++}.

ব্যাখ্যা:

&           Push a new stack to the stack stack.
 'rddd++    Modified standard quine.
        }   Move the ' to the right place.
         .  Pop the top stack as n, and the second stack as o. Write a file called
                 "n" with the contents of "o". (Quine name, no content)

কারণ আমিও সম্ভবত, এখানে স্ট্যাকের মধ্যে ঘটে যাওয়া ধাপগুলির একটি চিত্র এখানে দেখিয়েছি (প্রতিটি স্ট্যাক প্রতিনিধিত্ব করে []):

Initial state: [[]]

&              [[], []]
                  Push a new stack to the stack stack.

 '             [[], ["r", "d", "d", "d", "+", "+", "}", ".", "&"]]
                  This stack state occurs because ' will loop around the line
                    until finding the next '.

  r            [[], ["&", ".", "}", "+", "+", "d", "d", "d", "r"]]
                  Reverses the top (last) stack.

   ddd         [[], ["&", ".", "}", "+", "+", "d", "d", "d", "r", 13, 13, 13]
                  Push thirteen thrice.

      ++       [[], ["&", ".", "}", "+", "+", "d", "d", "d", "r", "'"]
                  Because char ' is 39 = 13 + 13 + 13.

        }      [[], [".", "}", "+", "+", "d", "d", "d", "r", "'", "&"]]
                  Takes the bottom item, then puts it on the top.

         .     []
                  Writes a file with content from the second-to-top stack and the
                    name as the concatenation of all elements in the top stack,
                    with top member priority (backwards from my representation).

আমি ঠিক জানি না কীভাবে এটি সঠিকভাবে কাজ করে; মিনিট পরিবর্তনগুলি এই বিরতি কারণ। উদাহরণস্বরূপ, &অন্যান্য বিভিন্ন স্থানে স্থাপন করা ঠিক একইভাবে কাজ করা উচিত, তবে এটি আপনি যেখানে রেখেছেন তার উপর নির্ভর করে ClassCastExceptionএস, IOExceptionগুলি এবং ArrayOutOfBoundsExceptionএসগুলি তৈরি করে। আমার কিছু বাগ-ফিক্সিং করা দরকার।


1
+1 এর জন্যPush a new stack to the stack stack.
পাভেল

1
আমার কাছ থেকে +1 যদি আপনি একটি নতুন স্ট্যাক স্ট্যাকটিকে স্ট্যাক স্ট্যাকের স্ট্যাকের দিকে ঠেলে দিতে পারেন, অন্যথায় এটি ভুলে যান! ... মজা করছে +1, আমিও হেসেছিলাম।
ম্যাজিক অক্টোপাস উরন

2
@ কারাসোকম্পুটিং যদি আমি আপনাকে বলি যে আমি এটি করতে পারি o? ;)
অ্যাডিসন ক্র্যাম্প

দীর্ঘশ্বাস আনজিপ ...
ম্যাজিক অক্টোপাস ভস্মাধার

1
উহম ... আমি মনে করি যে উত্পন্ন ফাইলটিতে কোড থাকা উচিত (যেমন এর সামগ্রীটি এর ফাইলের নামের সাথে সমান হওয়া উচিত)
লিও

5

নোড.জেএস, 56 52 বাইট

function f(){require('fs').writeFile(f+='f()',f)}f()

এটি সতর্কতা মুদ্রণ করে

অবজ্ঞাততা সতর্কতা: কলব্যাক ছাড়াই অ্যাসিঙ্ক্রোনাস ফাংশন কল করা অবনতিহীন।

আপনি যদি সবুজ সবুজ চান তবে এটিতে পরিবর্তন writeFileকরতে 4 বাইট লাগবে writeFileSync


2

লুয়া, 96 বাইট।

s="s=%qs=string.format(s,s)f=io.open(s)f.write(f,s)"s=string.format(s,s)f=io.open(s)f.write(f,s)

এটি আমার ফোনে টাইপ করা উচিত, কাজ করা উচিত, তবে আমি যখন কম্পিউটারে আসি তখন এটি পরীক্ষা করে দেখি।


12
আমি মনে করি খুব কমপক্ষে আপনাকে দুবার পরিবর্তন sting.formatকরতে হবে string.format
পিটার টেলর

@ পিটারটেলর @ আপনি স্টিং পছন্দ করেন না, তাই না?
কীউইউএসআর

5
@ কেইউইউউসর, ব্যক্তিগতভাবে তাঁর বিরুদ্ধে আমার কিছু নেই, এবং আসলে তিনি আমার লালন-পালনের জন্য অর্থ দিতে সাহায্য করেছিলেন, তবে আমি মনে করি যে লুয়া স্ট্যান্ডার্ড লাইব্রেরি সম্ভবত বিশেষভাবে পুলিশ অনুরাগীদের চেয়ে বরং একই জাতীয় এপিআইয়ের সাথে পরিচিত ব্যক্তিরা সাধারণ ব্যবহারের জন্য তৈরি করেছিলেন।
পিটার টেলর

1

সি, 134 বাইট

s[255];fd;char p[255]="s[255];fd;char p[255]=%c%s%c;main(){sprintf(s,p,34,p,34);creat(s,0);}";main(){sprintf(s,p,34,p,34);creat(s,0);}

এখানে উত্সটিতে *তাই এটি নিয়ম অনুসারে অনুমোদিত বলে মনে হচ্ছে না।
মান কালি

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