ইন্টারকাইন - দুটি প্রোগ্রাম যা লুপে একে অপরকে আউটপুট দেয়


29

প্রোগ্রাম চলাকালীন প্রোগ্রাম আউটপুট প্রোগ্রাম বি এর কোড এবং বি এর উত্স আউটপুট করে।

প্রয়োজনীয়তা:

  • উভয় প্রোগ্রাম জুড়ে শুধুমাত্র একটি ভাষা
  • প্রোগ্রামগুলি আলাদা। একটি প্রোগ্রাম যা ফলাফল নিজেই যোগ্যতা অর্জন করে না।
  • উভয় প্রোগ্রামই খালি নয় বা দৈর্ঘ্যে কমপক্ষে 1 বাইট। উত্স এবং আউটপুট উভয় ক্ষেত্রেই চলমান নিউলাইনগুলি এড়ানো হবে
  • স্টিডিন বন্ধ আছে। কিছু পড়বেন না (যাতে আপনি উত্সটি পড়তে এবং এটি পরিচালনা করতে পারবেন না )। আউটপুট stdout যায়।
    সম্পাদনা: stdin এর সাথে সংযুক্ত /dev/null। যদি স্পষ্ট করা হয় তবে আপনি এটি বন্ধ করার আদেশ দিতে পারেন।
  • randomফাংশন ব্যবহার করবেন না ।

অতিরিক্ত:

  • সম্ভব হলে ব্যাখ্যা দিন

স্কোর মোট দৈর্ঘ্য । ট্রেলিং নিউলাইন এটি প্রোগ্রামকে প্রভাবিত করে না তা গণনা করা হয় না।



5
"এলোমেলো ফাংশন ব্যবহার করবেন না।" আপনি কি বোঝাতে চেয়েছেন? আউটপুট একটি এলোমেলো সংখ্যার কাজ?
মিঃ এক্সকডার


আমি নিশ্চিত যে আপনি সত্যিকার অর্থে স্টিডিনটি বন্ধ। এটি স্ট্যান্ডিন প্রথম খোলার ফাইলটির নকল হয়ে যাওয়ার সাথে সাথে কিছু পরিবেশ বজায় রেখেছে। যাইহোক, আপনি যদি এটি ঠিক না করেন তবে আমি এটির অপব্যবহার করব।
জোশুয়া

উত্তর:


18

সিজেএম , 13 + 13 = 26 বাইট

{sYZe\"_~"}_~

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

আউটপুট

{sZYe\"_~"}_~

ব্যাখ্যা

{       e# Standard quine framework, leaves a copy of the block on the stack
        e# for the block itself to process.
  s     e# Stringify the block.
  YZe\  e# Swap the characters at indices 2 and 3, which are Y and Z themselves.
  "_~"  e# Push the "_~" to complete the quine.
}_~

যেহেতু e\এটি দ্বিতীয় এবং তৃতীয় অপারেন্ডে পরিবর্তনশীল, তাই অন্য প্রোগ্রামটি ঠিক একই কাজ করে, অদলবদল করে Zএবং Yতাদের মূল ক্রমে ফিরে আসে।


17

সিজে্যাম ,11 + 13 = 24 11 + 12 = 23 বাইট

"N^_p"
N^_p

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

আউটপুট:

"N^_p
"
N^_p

আউটপুটটিতে 13 বাইট রয়েছে তবে:

ট্রেলিং নিউলাইন এটি প্রোগ্রামকে প্রভাবিত করে না তা গণনা করা হয় না।

সুতরাং আমি জায়গাটি একটি নতুন লাইনে পরিবর্তন করে এর সুবিধা নিতে চাই।

এটি সংক্ষিপ্ততম সিজেএম যথাযথ কুইনের উপর ভিত্তি করে:

"_p"
_p

এবং N^স্ট্রিংটিকে একটি নতুন লাইনের সাথে জোর করতে হবে, যা একটি নতুন লাইন না থাকলে একটি নতুন লাইন যুক্ত করে এবং সেখানে উপস্থিত থাকলে তা মুছে ফেলবে, প্রতিটি অক্ষর অনন্য string

আমি মনে করি আমি কোয়েনের প্রশ্নে সেই কুইনটি দেখেছি, তবে এটি খুঁজে পেলাম না।


এখন পর্যন্ত অন্য সমস্ত উত্তর থেকে পৃথক করে দুটি ভিন্ন আকারের প্রোগ্রাম থাকার জন্য +1। সম্পাদনা করুন: যত তাড়াতাড়ি আমি আবারও ভোট দিতে পারি .. শেষ ভোটের সীমাতে পৌঁছে
>>>

দৈর্ঘ্যে ভিন্ন হওয়ার জন্য ভাল।
iBug

"আমি মনে করি কোয়েনের প্রশ্নে আমি এই কুইনটি দেখেছি, তবে আমি এটি খুঁজে পাইনি।" এটি কেবল গল্ফস্ক্রিপ্ট উত্তরে উল্লেখ করা হয়েছে।
মার্টিন ইন্ডার

12

RProgN 2 , 3 + 3 = 6 বাইট

প্রথম প্রোগ্রাম:

0
1

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

দ্বিতীয় প্রোগ্রাম:

1
0

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

-2 ধন্যবাদ মার্টিন Ender


7
আপনি ভাষা পরিবর্তন করে দুটি বাইট সংরক্ষণ করতে পারেন: tio.run/## কিয়্যাইক
মার্টিন

@ মার্টিন ইন্ডার ওহ ঠিক আছে আমি ভুলে গিয়েছিলাম আরপোগন 2 এ জাতীয় আচরণ প্রদর্শন করে ... বিটিডব্লিউ যদি এখনও সেই বগী না হয় তবে আমি জানি না।
এরিক আউটগল্ফার

11
আমি RPGN সম্পর্কে এই আচরণের উপস্থিতি ব্যতীত কিছুই জানি না।
মার্টিন ইন্ডার

@ মার্টিন ইন্ডার লেখক এখানে আরপিগ্রোএন-এর লেখক, আপনার কিছু পরিষ্কার করার দরকার আছে কিনা তা জিজ্ঞাসা করুন!
এটাকো

@ATaco ঠিক আছে, আমি আপনাকে ডাউনটা স্পষ্ট করে দিতে বলেছি কিন্তু আমি মনে করি না আপনি পারবেন ...
এরিক দ্য আউটগল্ফার

6

সি, 95 + 95 = 190 বাইট

16 * 2 বাইট সংরক্ষণ করার জন্য @ মিম্বিসকে ধন্যবাদ!

char*s="char*s=%c%s%c;main(i){i=%d^1;printf(s,34,s,34,i);}";main(i){i=1^1;printf(s,34,s,34,i);}

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

আউটপুট:

char*s="char*s=%c%s%c;main(i){i=%d^1;printf(s,34,s,34,i);}";main(i){i=0^1;printf(s,34,s,34,i);}

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

কোন ফলাফল:

char*s="char*s=%c%s%c;main(i){i=%d^1;printf(s,34,s,34,i);}";main(i){i=1^1;printf(s,34,s,34,i);}

1
কেন কেবল এটিকে সর্বদা সি বলা হয় না এবং প্রোগ্রামটি আলাদা করতে আমি পরিবর্তনের উপর নির্ভর করি? সি% সি এর চেয়ে ছোট
ব্যবহারকারী 253751

@ ইমিবিস হ্যাঁ, আপনি ঠিক বলেছেন, এটি পুরোপুরি যথেষ্ট।
স্টেডিবক্স 21

5

জাভাস্ক্রিপ্ট, 67 + 67 = 134 বাইট

1 ম প্রোগ্রাম:

alert(eval(c="`alert(eval(c=${JSON.stringify(c)},n=${+!n}))`",n=0))

২ য় প্রোগ্রাম:

alert(eval(c="`alert(eval(c=${JSON.stringify(c)},n=${+!n}))`",n=1))

এটি হারমান লাউস্টেইনের ট্রাই-ইন্টারকাইন সম্পর্কিত উত্তরের ভিত্তিতে তৈরি

জাভাস্ক্রিপ্ট (অবৈধ উত্স কোড), 75 + 75 = 150 61 + 61 = 122 58 + 58 = 116 50 + 50 = 100 বাইট

তুষারকে 20 বাইট বাঁচানো হয়েছে, 6 বাইট ক্রেগ আয়রে ধন্যবাদ এবং 16 বাইট সংরক্ষণ করেছেন কামোরোসো94

1 ম প্রোগ্রাম:

f=_=>alert(("f="+f).replace(0,a=>+!+a)+";f()");f()

২ য় প্রোগ্রাম:

f=_=>alert(("f="+f).replace(1,a=>+!+a)+";f()");f()

0 এর সাথে এর বিপরীতে 1 গুলি অদলবদল করে। তারা উভয় একই জিনিস করে, কেবল তাদের উত্স কোডের কারণে বিভিন্ন আউটপুট উত্পাদন করে।


1
আসুন কয়েকটি বাইট সংরক্ষণ করুন। f.toString()=> (''+f), (0|1)=> 0|1, (a,b)=> এর aফলাফলf=()=>("f="+(''+f).replace(/0|1/g,a=>a==0?1:0)+";f()");f()
তুষার

f=_=>@ তুষারের পরামর্শ অনুসারে আপনি কয়েকটি বাইট সংরক্ষণ করতে এবং প্রতিস্থাপন কলব্যাক থেকে পেরেনগুলি অপসারণ করতে অব্যবহৃত প্যারামিটার ব্যবহার করতে পারেন :a=>+!+a
ক্রেগ

-3 বাইটের "f="+(f+"")সাথে প্রতিস্থাপন করুন ("f="+f)
kamoroso94

প্রতিস্থাপন /0|1/gএবং /1|0/gসঙ্গে 0এবং 1যথাক্রমে জন্য -5 বাইট।
কামোরসো94

তুমি কি তা চালিয়েছ? এটি এভাবে কাজ করে f=_=>alert(("f="+f).replace(0,a=>+!+a)+";f()");f()
kamoroso94

4

পাইথন 2, 63 + 63 = 126 বাইট

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

প্রথম প্রোগ্রাম:

A='A=%r;print A[:23]%%A+A[29:35]23:29]';print A[:23]%A+A[23:29]

আউটপুট:

A='A=%r;print A[:23]%%A+A[29:35]23:29]';print A[:23]%A+A[29:35]

দ্বিতীয় প্রোগ্রাম:

A='A=%r;print A[:23]%%A+A[29:35]23:29]';print A[:23]%A+A[29:35]

আউটপুট:

A='A=%r;print A[:23]%%A+A[29:35]23:29]';print A[:23]%A+A[23:29]


3

গণিত, 43 + 44 = 87 বাইট

(Print[#1[#0[#1, -#2]]] & )[HoldForm, -1 1]

এবং

(Print[#1[#0[#1, -#2]]] & )[HoldForm, -(-1)]

এটি আমার কম্পিউটারে পরীক্ষিত হয়েছে এবং দ্বিতীয়টির আউটপুট কেবল -1শেষে রয়েছে, নেই -1 1
নম্বরমানিয়াক

@ নাম্বারমানিয়াক আমি এই কোডগুলি পাঠ্য-ভিত্তিক ইন্টারফেসে লিখেছি। দেখে মনে হচ্ছে তারা নোটবুকগুলিতে কাজ করে না।
আলেফাল্ফ

3

"স্টিডিন বন্ধ আছে" নিয়মটি গালাগাল করে asmutils sh, 16 + 16 বাইটস।

#!/bin/sh
tr x y

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

এই ইন্টারকাইনটি পে-লোড সক্ষম তবে একটি পে-লোড serোকানো জটিল।

তদতিরিক্ত, এই আসল সংস্করণটি সেই দিনগুলিতে আমি ব্যবহৃত প্রাচীন কার্নেলটিতে কিছু ক্রেজি বাগটি আপত্তিজনক ব্যবহার করি। (আমি জানি না যে এই কর্নেলের কী অবস্থা রয়েছে - পরে আমি জানতে পেরেছিলাম এটির ডিভাইসগুলির জন্যও বিভিন্ন বড় এবং ছোটখাট সংখ্যা ছিল)) আপনি যদি এবিআই পরিবর্তনগুলি স্থির করে দেন যা আন্তঃকণিকাটি ভেঙে ফেলেছিল তবুও কাজ করবে না। আমি ভুলে যাই যদি অ্যাসমুটিলস এক্সের এক্সিকিউট থাকে কি না, তবে এটি যদি হয় তবে এটি একটি আধুনিক সংস্করণ:

exec dd skip=0 | tr x y

এটি অপ্রয়োজনীয় ডিডিতে একটি ইচ্ছাকৃত বাগটি গালাগালি করে; এটির পারফরম্যান্স অপটিমাইজেশন রয়েছে যা এটিকে স্কিপ করতে পারলে llseek কল করে তবে একটি বাইট সংরক্ষণ করতে এটি SEEK_CUR এর চেয়ে SEEK_SET কেটে যায়। এর ফলে স্ট্যাডারগুলিতে আবর্জনা দেখা দেয় তবে স্টাডাউটে ইন্টারকাইন থাকে। স্টিমার স্প্যাম দমন করার জন্য Asmutils dd এর বিকল্প নেই।


স্টিডিন /dev/nullপরিবর্তে সংযুক্ত থাকলে এই কাজ করবে ? যাইহোক, ভাল কাজ!
iBug

@ আইবুগ: না সম্পূর্ণরূপে স্ট্ডিন বন্ধ হয়ে যায় এবং সত্য যে asmtils sh libc এর সাথে যুক্ত নয় এবং তাই libc এ স্বয়ংক্রিয়-মেরামতের কোড উত্তরাধিকার সূত্রে প্রাপ্ত হয় না on
জোশুয়া

আপনার কি দরকার #!/bin/sh?
ক্যালকুলেটরফলাইন 21

@ ক্যালকুলেটরফ্লাইন: এটি আপনার অন্য কোনও সংজ্ঞাটির যথার্থতার উপর নির্ভর করে।
জোশুয়া

সাধারণত, শেবাংগুলি গণনা করা হয় না, সুতরাং এটি 6 বাইট হবে।
ক্যালকুলেটরফলাইন


1

কমন লিস্প, 58 টি অক্ষর

#1=(let((*print-circle* t))(print'(write '#1# :circle t)))

... বা 24 টি অক্ষর যদি আপনার মনে হয় না *print-circle*যে বিশ্বব্যাপী সেট করা আছে T:

#1=(print '(write '#1#))

কোডটির মুদ্রিত প্রতিনিধিত্বটি একটি চক্রাকার কাঠামো হিসাবে পড়া হয়, যেখানে #1#নিম্নলিখিত কনস সেলটি নির্দেশ করে #1=। আমরা প্রোগ্রামগুলি উদ্ধৃত করি যাতে তারা কার্যকর না হয়। যেহেতু *print-circle*টি, তাই আরপিএল মুদ্রণের সময় এই জাতীয় পাঠক ভেরিয়েবলগুলি নির্গত করার জন্য যত্ন নেয়; উপরের কোডটি এটি প্রিন্ট করে এবং ফেরত দেয়:

#1=(write '(print '#1#)) 

যখন আমরা উপরের কোডটি মূল্যায়ন করি তখন এটি মুদ্রণ করে:

#1=(print '(write '#1#))

আপনি যদি ডিফল্ট মানটির সাথে *print-circle*মানিয়ে নিতে চান যা মানানসই বাস্তবায়নে নিল, তবে আপনাকে অস্থায়ীভাবে পরিবর্তনশীলটি পুনরায় ফিরিয়ে দিতে হবে:

#1=(let((*print-circle* t))(print'(write '#1# :circle t)))

এলইটি-র শরীরের অভ্যন্তরে, আমরা *print-circle*টি হিসাবে জিনিসগুলি মুদ্রণ করি So

#1=(write
    '(let ((*print-circle* t))
       (print '#1#))
    :circle t) 

আপনি দেখতে পাচ্ছেন যে নতুন প্রোগ্রামটি পুনরায় ফিরিয়ে আনবে না *print-circle*, তবে যেহেতু আমরা ব্যবহার করছি write, যা নিম্ন-স্তরের ফাংশন বলে print, আমরা অতিরিক্ত আর্গুমেন্ট যেমন পাস করতে পারি :circle। কোডটি তখন প্রত্যাশার মতো কাজ করে:

#1=(let ((*print-circle* t))
     (print '(write '#1# :circle t)))

তবে আপনাকে উপরের প্রোগ্রামগুলি কোনও স্ক্রিপ্ট হিসাবে সম্পাদন করতে হবে, একটি আরপিএল-র ভিতরে নয়, কারণ আপনি বিজ্ঞপ্তি কাঠামোগুলি যত্ন নেওয়ার সময় জিনিসগুলি মুদ্রণ করেছেন writeএবং উভয়ই printমুদ্রিত মানটি ফিরিয়ে দেন; এবং একটি ডিফল্ট REPL- তে, মানটিও মুদ্রিত হচ্ছে, তবে গতিশীল প্রেক্ষাপটের বাইরে যেখানে *print-circle*টি is


1

> <> , 16 + 16 = 32 বাইট

":1-}80.r   !#o#

এবং

#o#!   r.08}-1:"

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

এটি প্রোগ্রামে একটি জাম্প ব্যবহার করে কাজ করে, প্রথম প্রোগ্রামগুলির জাম্প স্ট্যাকের বিপরীতটি এড়িয়ে যায় (যদি এটি স্ট্যাকটিকে বিপরীত করে তোলে তবে এটি একটি কুইন হবে)। দ্বিতীয় প্রোগ্রামটি বিপরীতটি এড়িয়ে যায় না তবে এটি ইতিমধ্যে প্রোগ্রামটির প্রবাহ দ্বারা বিপরীত হয়েছে তবে এটি আসলটি তৈরি করবে।

এই কোডটি একটি ত্রুটিতে শেষ হবে।


1

RProgN 2 , 7 + 7 = 14 বাইট

আমি কেবল প্রিন্ট অর্ডারগুলিকে অপব্যবহার করার চেয়ে আরপিগ্রোএন এর আরও ভাল ব্যবহার দেখানোর চেষ্টা করতে চেয়েছিলাম ...

1
«\1\-

এবং...

0
«\1\-

ব্যাখ্যা

1   # Push the constant, 1. (Or 0, depending on the program)

«\1\-
«       # Define a function from this to the matching », in this case there isn't any, so define it from this to the end of the program, then continue processing.
 \      # Flip the defined function under the constant.
  1\-   # Get 1 - Constant.

কারণ এটি স্ট্যাকটি বিপরীতভাবে প্রিন্ট করে, নতুন ধ্রুবকটি প্রথম মুদ্রিত হয়, তারপরে ফাংশনের স্ট্রিংফাইড সংস্করণটি মুদ্রিত হয়।

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


1

লোগো , 65 + 66 = 131 বাইট

apply [(pr ? ` [[,? ,-?2]] )] [[apply [(pr ? ` [[,? ,-?2]] )]] 1]

এবং

apply [(pr ? ` [[,? ,-?2]] )] [[apply [(pr ? ` [[,? ,-?2]] )]] -1]

1

পাইথন 3, 74 + 74 = 148 বাইট

a='a=%r;b=%r;print(b%%(b,a))';b='b=%r;a=%r;print(a%%(a,b))';print(b%(b,a))

এবং

b='b=%r;a=%r;print(a%%(a,b))';a='a=%r;b=%r;print(b%%(b,a))';print(a%(a,b))

আমি এটা বুঝতে পারি না


1

> <> , 12 + 12 = 24 বাইট

'3d*!|o|!-c:

এবং

':c-!|o|!*d3

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

উভয় প্রোগ্রাম স্ট্যাকের সাথে কোড যুক্ত করতে একটি মোড়কের স্ট্রিং আক্ষরিক ব্যবহার করে, তারপরে 'বিভিন্ন পদ্ধতির মাধ্যমে কমান্ড তৈরি করে । স্ট্যাকটি প্রিন্ট করার সময় এটি কোডটি পিছনের দিকে ঠেলে দেয়, তবে 'সামনের দিকে থাকে। বিভিন্ন উত্পাদন যে উত্পাদন করে '; 3d*, d3*, 00g, :c-যখন সঙ্গে যুক্ত করা 3d*এবং :9-যখন সঙ্গে যুক্ত করা 00g

একজন খুব অনুরূপ সমাধান 13 * 2 বাইট জন্য Befunge-98 পোস্ট করতে,

"2+ck, @,kc+2

1

স্ট্যাক্স , 18 + 20 = 38 বাইট

"Vn|^34bL"Vn|^34bL

চালান এবং অনলাইন ডিবাগ!

"Vn|^34bL
"Vn|^34bL

চালান এবং অনলাইন ডিবাগ!

ব্যাখ্যা

সম্পূর্ণতার জন্য যুক্ত করা হয়েছে। @ জিমি 23013 এর সিজেএম উত্তরটির পোর্ট। সেট xor ব্যবহার করে নিউলাইনগুলিকে টগল করে।


0

জাভাস্ক্রিপ্ট (ES6), 36 + 36 = 72 বাইট

প্রোগ্রাম 1:

f=n=>('f='+f).replace(/4|5/g,n=>n^1)

প্রোগ্রাম 2:

f=n=>('f='+f).replace(/5|4/g,n=>n^1)

এই প্রোগ্রামগুলি নিজের ক্লোন করে কাজ করে এবং 5সাথে 4এবং এর 4সাথে প্রতিস্থাপন করে5

console.log((
    f=n=>('f='+f).replace(/4|5/g,n=>n^1)
)())
console.log((
    f=n=>('f='+f).replace(/5|4/g,n=>n^1)
)())


2
যেহেতু এটি ট্যাগ করা কুইন , তাই এটি সাধারণত একটি "প্রতারণামূলক কুইন" হিসাবে বিবেচিত হবে, যেহেতু এটি নিজস্ব উত্স পড়ে। সে সম্পর্কে ওপির সিদ্ধান্ত কী তা নিশ্চিত নয় তবে সাধারণত তাদের অনুমতি দেওয়া হয় না।
স্টিফেন

0

ক্লেইন , 26 24 বাইট

<:3+@+3<:"

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

ব্যাখ্যা

এটি আমার ক্লেইন কুইনের মতোই কাজ করে , যেখানে এটি উত্সটি পিছনের দিকে প্রিন্ট করে ", একটি শেষেরটি প্যালিনড্রোমিক হয়ে এড়িয়ে চলে যায়, সুতরাং আমাদের যা করার দরকার তা এটির কার্যকারিতা ক্ষতিগ্রস্থ না করে এটি নন-প্যালিনড্রোমিক করা। স্যুইচিংয়ের মাধ্যমে <এবং :আমরা কার্যকারিতাতে হস্তক্ষেপ না করে এটি করতে সক্ষম হয়েছি।


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