তিনটি মিউচুয়াল কুইনস


23

কাজটি

এই চ্যালেঞ্জে আপনার কাজটি হ'ল তিনটি প্রোগ্রাম লিখুন যা এক ধরণের মিউচুয়াল কুইনের মতো সিস্টেম তৈরি করে। আসুন প্রোগ্রামগুলি কল করি A, Bএবং C। যদি কোনও প্রোগ্রামকে অন্য প্রোগ্রামের উত্স ইনপুট হিসাবে দেওয়া হয় তবে এটি তৃতীয় প্রোগ্রামের উত্স আউটপুট করে। উদাহরণস্বরূপ, যদি ইনপুট হিসাবে Aদেওয়া Bহয়, এটি আউটপুট করে C। প্রোগ্রাম ইনপুট হিসাবে তাদের নিজস্ব উৎস দেওয়া হয়, তাহলে তারা পাবে আউটপুট তিনটি স্ট্রিং "three", "mutual"এবং "quines"(উদ্ধৃতি চিহ্ন বিনা)। সব ক্ষেত্রেই তারা একটি অতিরিক্ত ট্রেলিং নিউলাইন আউটপুট দিতে পারে। অন্য কোনও ইনপুটগুলির জন্য, প্রোগ্রামগুলি ক্র্যাশ সহ কিছু করতে পারে।

উদাহরণ

উদাহরণ স্বরূপ, ধরুন যে সোর্স কোড A, Bএবং Cহয় aSdf, ghJkএবং zxcV। তারপরে প্রোগ্রামগুলি নিম্নরূপ আচরণ করা উচিত।

Source Input  Output
--------------------
aSdf   aSdf   three
aSdf   ghJk   zxcV
aSdf   zxcV   ghJk
ghJk   aSdf   zxcV
ghJk   ghJk   mutual
ghJk   zxcV   aSdf
zxcV   aSdf   ghJk
zxcV   ghJk   aSdf
zxcV   zxcV   quines

বিধি এবং স্কোরিং

সমাধানগুলি A, Bএবং Cহয় ফাংশন বা সম্পূর্ণ প্রোগ্রাম হতে পারে তবে সেগুলি অবশ্যই সম্পূর্ণ স্বাধীন হতে হবে: কোনও অংশীদারি কোডের অনুমতি নেই। স্ট্যান্ডার্ড লুফোলস এবং কুইন বিধিগুলি প্রয়োগ হয়, তাই প্রোগ্রামগুলি কোনওভাবেই তাদের নিজস্ব উত্স কোড অ্যাক্সেস করতে পারে না।

আপনার স্কোর সম্মিলিত বাইট গণনা হয় A, Bএবং C, নিম্ন স্কোর ভাল হচ্ছে।


"কোন শেয়ার্ড কোড অনুমোদিত নয়" এর অর্থ কী? তাদের কি একই অংশ থাকতে পারে না? (এটি জাভাতে উত্তর দেওয়া শক্ত করে দেবে, কারণ বেশিরভাগ প্রোগ্রামের public static void mainকোথাও একটি অংশ রয়েছে।) বা কেবল আপনি এমন একটি ফাংশন লিখতে পারবেন না যা তিনজনেই ডাকা?
পাওলো ইবারম্যান

@ PaŭloEbermann এর অর্থ হ'ল শেষোক্ত: 3 টি প্রোগ্রামের প্রত্যেকটির নিজস্ব নিজস্ব কাজ করা উচিত।
Zgarb

উত্তর:


16

সিজেম, 165 147 114 108 99 বাইট

2 _ri^_q+@"quinesmutualthree"6/=?
1 _ri^_q+@"quinesmutualthree"6/=?
3 _ri^_q+@"quinesmutualthree"6/=?

@ মার্টিনব্যাটনারকে এমন একটি পরামর্শের জন্য ধন্যবাদ যা 48 বাইট সংরক্ষণে সহায়তা করেছে!

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

প্রতিপাদন

$ cat A
2 _ri^_q+@"quinesmutualthree"6/=?
$ cat B
1 _ri^_q+@"quinesmutualthree"6/=?
$ cat C
3 _ri^_q+@"quinesmutualthree"6/=?
$ 

$ cjam A < A
three
$ cjam A < B
3 _ri^_q+@"quinesmutualthree"6/=?
$ cjam A < C
1 _ri^_q+@"quinesmutualthree"6/=?
$ 

$ cjam B < A
3 _ri^_q+@"quinesmutualthree"6/=?
$ cjam B < B
mutual
$ cjam B < C
2 _ri^_q+@"quinesmutualthree"6/=?
$ 

$ cjam C < A
1 _ri^_q+@"quinesmutualthree"6/=?
$ cjam C < B
2 _ri^_q+@"quinesmutualthree"6/=?
$ cjam C < C
quines

ধারণা

সেট {0, 1, 2, 3} অপারেশন অধীনে একটি গ্রুপ ^ (বাইনারি একচেটিয়া বা), যেখানে প্রতিটি উপাদান নিজস্ব বিপরীত হয়।

প্রথম অক্ষর (character 0, 1, 2, 3 of এর উপাদান) ব্যতীত যদি তিনটি প্রোগ্রামই অভিন্ন হয় , তবে আমরা সেগুলি সহজেই আলাদা করে মুদ্রণ করতে পারি:

  • আমরা উত্স কোড এবং ইনপুটটির শুরুতে অঙ্কটি XORing দ্বারা শুরু করি।

  • যদি ফলাফলটি 0 হয় তবে উত্স এবং ইনপুট ম্যাচ।

    সুতরাং, আমরা এই সাধারণ অঙ্ক দ্বারা নির্বাচিত তিনটি শব্দের একটি মুদ্রণ করি।

  • যদি ফলাফল 0 না হয় তবে এটি {1, 2, 3 the এর উপাদান যা উত্স বা ইনপুটটিতে নেই।

    এইভাবে, আমরা এটি প্রিন্ট করি, তারপরে বাকী ইনপুট।

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

2                                  e# Push the number N on the stack.
  _                                e# Push a copy.
    r                              e# Read a token from STDIN, i.e., the input up
                                   e# to and excluding the next whitespace char.
     i                             e# Cast to integer.
      ^                            e# XOR it with the copy of N. Result: X
       _                           e# Push a copy of the result.
        q+                         e# Append the rest of the input.
          @                        e# Rotate N on top of the stack.
           "quinesmutualthree"6/   e# Push ["quines" "mutual" "three"].
                                =  e# Select the word at index N.
                                 ? e# If X is non-zero, select the modified input;
                                   e# otherwise, select the word.

2
বাহ, আমি প্রশ্নটি পড়েছিলাম এবং ভেবেছিলাম "এর জন্য কোনও উত্তর আসবে না।" তারপরে আমি নীচে তাকালাম এবং ডেনিসের কাছ থেকে একটি উত্তর দেখতে পেয়েছি (আর কে?)!
স্তর নদী সেন্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.