বহুগ্লোট টুকরো মুদ্রণ করুন


22

সাধারণত, বহুগ্লোটগুলি এমনভাবে তৈরি করা হয় যে প্রতিটি ভাষা অন্য ভাষার জন্য উপস্থিত কোডের কিছু অংশগুলিকে স্ট্রিং লিটারেলগুলিতে মুড়িয়ে, মন্তব্য সিনট্যাক্স বা অন্যান্য অনুরূপ কৌশল ব্যবহার করে উপেক্ষা করতে পারে।

আপনার লক্ষ্য হ'ল একটি বহুবৃত্ত লিখুন যেখানে প্রতিটি ভাষার আউটপুট হ'ল বহুভক্তের কোড যা সেই আউটপুট তৈরি করে। নির্দিষ্টভাবে, আউটপুটটি কেবল মুছে ফেলার সাথে বহুবৃত্ত কোড থেকে তৈরি করা উচিত এবং এটি অবশ্যই প্রদত্ত ভাষায় একটি কুইন হতে হবে।

বিধি

  • শুধুমাত্র যথাযথ কুইনগুলি অনুমোদিত (সোর্স কোড না পড়া, কোনও ইনপুট না নেওয়া, আউটপুট অবশ্যই STDOUT বা নিকটতম বিকল্প হতে হবে যদি STDOUT কোনও বিকল্প না হয়, এবং প্রোগ্রামগুলি অবশ্যই কেবল আক্ষরিক চেয়ে বেশি সংখ্যক সমন্বিত থাকে যা ছাপানো হয়) are
  • যেহেতু বিভিন্ন ভাষা বিভিন্ন এনকোডিং ব্যবহার করতে পারে তাই কাঁচা বাইটগুলি এখানে গুরুত্বপূর্ণ। উদাহরণস্বরূপ, ভাষা একটি হল UTF-8 ব্যবহার করে এবং ভাষা বি CP437 ব্যবহার করে, (হেক্স) কোড C3 88 46 47হবে ÈFGভাষাটির জন্য এবং ├êFGভাষা বি
  • সমস্ত আউটপুট অবশ্যই আলাদা হতে হবে (আবার, কাঁচা বাইটের তুলনা)। এটি গৌণ ভাষার সংস্করণকে সীমাবদ্ধ করার চেষ্টা করার সাথে জটিলতাগুলি এড়িয়ে চলে - যদি দুটি ভাষা একই কাজ করতে কোডের একই অংশ ব্যবহার করে তবে আপনি উভয়ই দাবি করতে পারবেন না।
    • আপনার দুটি এবং A এবং B দুটি ভাষা রয়েছে যা XYউভয় ক্ষেত্রেই বৈধ আউটপুট, তবে YZএটি B তেও বৈধ, আপনি XYA YZএর আউটপুট এবং B এর আউটপুট হিসাবে বেছে নিতে পারেন , তাই আপনি উভয়ই আপনার স্কোরের জন্য দাবি করতে পারেন ( তবে XYউপরোক্ত নিয়মের কারণে আপনি উভয় ভাষার পক্ষে দাবি করতে পারবেন না )।
  • সমস্ত আউটপুটগুলি যতটা সম্ভব সংক্ষিপ্ত হতে হবে। উদাহরণস্বরূপ, যদি আপনার কোডটি print('foo')#somethingপাইথন 3 এর জন্য হয় (আউটপুটটি সঠিক নয় এই বিষয়টি উপেক্ষা করে), আপনার আউটপুট দেওয়ার কোডটি হবে print('foo')এবং print('foo')#তা অনুমোদিত হবে না। যদি সঠিক আউটপুট উত্পাদন করে এমন সমান (সর্বনিম্ন) দৈর্ঘ্যের একাধিক স্ট্রিং থাকে তবে আপনি এগুলির মধ্যে যে কোনও একটি চয়ন করতে পারেন।
  • কমপক্ষে 2 টি ভাষায় জমা দিতে হবে বহুগ্লোট।
  • আপনার স্কোর দ্বারা দেওয়া হবে (number of programming languages with distinct outputs)**3/(total byte size of polyglot)। সর্বোচ্চ স্কোর জয়। দুটি সাবমিশন একই স্কোর অর্জন করে এমন ইভেন্টে, সেই স্কোরটি প্রথমে পৌঁছানোর জমাটি জিতবে।

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


যার ভাষার আদেশগুলি 8 বিট দীর্ঘ নয় এমন ভাষার ক্ষেত্রে আপনি কীভাবে "মুছে ফেলা" সংজ্ঞায়িত করবেন? আপনি কি উত্স থেকে কোনও সময়ে একটি আদেশ বা একটি সময়ে বাইট মুছবেন?

@ মার্টিনএন্ডার ভাল বিশ্বাস অনুমান করা যায় পলিগ্লোট থেকে কেউ তৈরি করা যেতে পারে এমন একটি সংক্ষিপ্ত কুইন না পাওয়া পর্যন্ত উত্তরটি বৈধ হওয়ার জন্য বিশ্বাসযোগ্য।
মেগো

@ ais523 সবকিছু বাইট স্তরে সম্পন্ন হয়।
মেগো

উত্তর:


11

গল্ফস্ক্রিপ্ট + সিজেম + ফিশন 2 + জেলি , 4 টি ভাষা, 24 বাইট, স্কোর 2.667

হেক্স ডাম্প দিয়ে শুরু করা যাক:

00000000:  3322 3024 700a 2721 2b4f 5222 0a3c 3024 700a 6523 7fff cccc

গল্ফস্ক্রিপ্ট, সিজেম এবং ফিশন ২-এর জন্য আমরা কয়েকটি এসসিআইআই-সামঞ্জস্যপূর্ণ সিঙ্গল-বাইট এনকোডিংয়ে আইএসও 8859-1 এর মতো ব্যাখ্যা করি (সঠিক এনকোডিংটি কোনও বিষয় নয়, কারণ ভাষাগুলি কেবলমাত্র ASCII অক্ষরের জন্য অপারেটরগুলি সংজ্ঞায়িত করে):

3"0$p
'!+OR"
<0$p
e#<DEL>ÿÌÌ

যেখানে <DEL>নিয়ন্ত্রণ চরিত্র 0x7f

জেলিতে, এটি জেলির নিজস্ব কোড পৃষ্ঠাতে অনুমান করা হয়, যেখানে এটি পরিবর্তে এর মতো দেখাচ্ছে:

3"0$p½'!+OR"½<0$p½e#¶”ṘṘ

GolfScript

eগত লাইনে একটি অজানা পরিবর্তনশীল এবং #, লাইন বাকি আউট মন্তব্য তাই এই কপি করে প্রিন্ট

"0$p"
0$p

সঙ্গে একটি trailing লাইনফীড। এটি হ'ল স্ট্যান্ডার্ড কুইনের গল্ফস্ক্রিপ্ট / সিজেএম বহুগ্লোট সংস্করণ:

".p"
.p

বহুভুজ চেষ্টা করুন। | কুইন চেষ্টা করুন।

CJam

এখানে, e#শেষ পংক্তিতে মন্তব্যগুলি, তাই প্রায় অভিন্ন হিসাবে, এই মুদ্রণ করে

"0$p"
0$p

একটি পিছনে লাইনফিড ছাড়া

বহুভুজ চেষ্টা করুন | কুইন চেষ্টা করুন।

বিদারণ

বিদারণ শুধুমাত্র দ্বিতীয় লাইন যা কমিটি হয় , মানক বিদারণ quine তাই এটি কপি করে প্রিন্ট

'!+OR"

আমি এখানে বহুগ্লোটের জন্য একটি অনলাইন লিঙ্ক সরবরাহ করতে পারছি না, কারণ টিআইও ফিশনটিকে ইউটিএফ -8 হিসাবে ফাইল পাঠায়, তবে ফিশন বাইট বাই উত্স বাইট পড়ে, যা শেষ লাইনটি দীর্ঘ করে দেয়। যাইহোক, আমি এটি স্থানীয়ভাবে একটি আইএসও 8859-1 এনকোডযুক্ত ফাইল (যা শেষ লাইনের দ্বিতীয়টির মতো একই দৈর্ঘ্য রয়েছে) দিয়ে পরীক্ষা করেছি এটি নিশ্চিত করার জন্য this

কুইন চেষ্টা করুন।

জেলি

জেলির লাইনফিডগুলির জন্য পাইলক্রো একটি উপনাম, সুতরাং উত্সটি সমান:

3"0$p½'!+OR"½<0$p½e#
”ṘṘ

জেলি প্রোগ্রামের শেষ লাইন ব্যতীত সমস্ত হ'ল "সহায়তাকারী লিঙ্কগুলি" (অর্থাত্ ফাংশন) যা এগুলিকে কল না করা হলে তা এড়ানো যায় না যদি তারা সিন্ট্যাকটিকভাবে বৈধ না হয়। এটি আসলে 3সিজাম এবং গল্ফস্ক্রিপ্ট প্রোগ্রামগুলিতে প্রথমে আসার কারণ, কারণ অন্যথায় জেলিতে "পার্স করা যায় না।

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

বহুভুজ চেষ্টা করুন। | কুইন চেষ্টা করুন।


9

> <> + পাইথন, 2 টি ভাষা, 51 46 বাইট, স্কোর ~ = 0.16 0.17

যেহেতু এখনও কোনও উত্তর নেই, তাই আমি একটি সাধারণ উত্তর দিয়ে শুরু করব

#.09;!?lo}*2+2f"
_='_=%r;print _%%_';print _%_

> <> এবং পাইথনের জন্য এটি ব্যবহার করে দেখুন

> <> প্রথম লাইনটি একটি কুইন (# প্রতিফলিত করে, "পুরো লাইনটি স্ট্যাকের উপরে রাখে, তারপরে আমরা 34 টি চাপি (" এর জন্য চারকোড) এবং সবকিছু মুদ্রণ করি), মৃত্যুদন্ড কার্যকর হয় না এটি থেকে আর সরানো হয় না, তাই এটি বাকীভাবে কার্যকরভাবে অগ্রাহ্য করে কোড.

পাইথনের জন্য প্রথম লাইনটি একটি মন্তব্য, যখন দ্বিতীয়টি হ'ল একটি কুইন (উভয় যুক্তির মতো একই স্ট্রিংয়ের সাথে স্ট্রিং প্রতিস্থাপন ব্যবহার করে পাইথনে স্ট্যান্ডার্ড অ্যাপ্রোচ)।


1
> <> উত্তরে সামান্য অভিযোজন আপনাকে কিছু বাইট বাঁচাতে পারে: - # "10 r10gol?! 60. |!
টিল পেলিকান

@ ট্রিপেলিকান আমাকে ব্যবহারের কথা মনে করিয়ে দেওয়ার জন্য আপনাকে ধন্যবাদ .! আমি এই পদ্ধতিটি ব্যবহার করে আমার কুইনকে অভিযোজিত করেছি, যদিও আমি স্ট্রিংটি বিপরীতে রাখতে পছন্দ করি (যেহেতু এটি বাইটগুলি সংরক্ষণ করে) এবং ব্যবহার এড়াতে g(যেহেতু এটি "উত্স কোডটি পড়া" হিসাবে ব্যাখ্যা করা যেতে পারে)
লিও

জি ব্যবহার না করার জন্য এটি একটি সুন্দর ন্যায্য পয়েন্ট। এর সম্পর্কে একবার দেখার জন্য এবং কিছুটা চিন্তা করার পরে, আপনি আপনার "লাইক; # .09;!? লো} -1" পেতে স্ট্যাক থেকে # (ascii 35) ব্যবহার করে আরও কমিয়ে আনতে পারেন
টেল পেলিকান

7

জাভাস্ক্রিপ্ট + পাইথন 2 + জাপট, 3 টি ভাষা, 132 বাইট, স্কোর ~ = 0.205

A="`i96d)p2`i96d)p2";1//2;A=1
S="S=%s;console.log(S,uneval(S))";A//2;S="S=%r;print S%%S";"""
console.log(S,uneval(S))//""";print S%S

এই মুদ্রণ

S="S=%s;console.log(S,uneval(S))";console.log(S,uneval(S))

জাভাস্ক্রিপ্টে (কেবল ফায়ারফক্সে),

S='S=%r;print S%%S';print S%S

পাইথন 2 এ, এবং

`i96d)p2`i96d)p2

জাপটে। ( এটি অনলাইনে পরীক্ষা করুন! )

জাভাস্ক্রিপ্ট

এটি জাভাস্ক্রিপ্ট দেখতে পায়:

A="`i96d)p2`i96d)p2";1
S="S=%s;console.log(S,uneval(S))";A
console.log(S,uneval(S))

প্রথম লাইনটি কোনও অপ-বিকল্প কারণ কোনওভাবেই Aএটি ব্যবহার করা হয় না। দ্বিতীয় লাইন সেট Sস্ট্রিং S=%s;console.log(S,uneval(S))এবং প্রতিস্থাপন পর তৃতীয় কপি করে প্রিন্ট এটা %sদিয়ে unevalএর ইডি উপস্থাপনা S(ঠিক Sকোট আবৃত)। ফলাফলটি জাভাস্ক্রিপ্টে একটি কুইন।

পাইথন

পাইথন মূলত এটি যা দেখায়:

A="`i96d)p2`i96d)p2";1//2;A=1
S="S=%s;console.log(S,uneval(S))";A//2;S="S=%r;print S%%S"
print S%S

প্রথম লাইনটি প্রায় কোনও অপ-বিকল্প; শুধুমাত্র গুরুত্বপূর্ণ অংশটি A=1শেষে রয়েছে। এটি Aএকটি সংখ্যায় পরিণত হয় যাতে A//2দ্বিতীয় লাইনের পূর্ণসংখ্যা বিভাগ ত্রুটি না ফেলে।

দ্বিতীয় রেখাটি বেশিরভাগ ক্ষেত্রে একইভাবে থাকে, Sএটি স্ট্রিংয়ের সাথে সেট করে S=%r;print S%%S। এর কাঁচা উপস্থাপনা (কেবলমাত্র একক-কোটায় আবৃত) দিয়ে Sপ্রতিস্থাপনের পরে তৃতীয় লাইন মুদ্রণ করে । পাইথন 2 এ ফলাফল একটি কুইন।%rSS

Japt

এটি জাভাস্ক্রিপ্ট কোড যা জাপট ইন্টারপ্রেটার দেখেছে:

A="`i96d)p2`i96d)p2";1//2;A=1
S="S=%s;console.log(S,uneval(S))";A//2;S="S=%r;print S%%S";"","\nconsole.log(S,uneval(S))//","";.p("r".i("n".t(),S%S))

আপনি দেখতে পাচ্ছেন, এটি মূলত একটি প্রধান ব্যতিক্রম সহ জাভাস্ক্রিপ্ট উত্তরের মতোই: শেষ দুটি লাইন একত্রিত। ফলস্বরূপ, দোভাষী আসলে এটিই দেখেন:

A="`i96d)p2`i96d)p2";1
S="S=%s;console.log(S,uneval(S))";A

প্রথম লাইনটি Aজাপট কুইনে সেট Sকরে এবং দ্বিতীয় সেটটি জেএস কুইনের অংশে সেট করে। জাপটে তবে কেবলমাত্র সর্বশেষ এক্সপ্রেশনটি আউটপুটে প্রেরণ করা হয়; এটি Aতাই, আউটপুট হয় `i96d)p2`i96d)p2


কী uneval? আমার জন্য কাজ করে না
সাইয়েস

@ কিয়েস বিকাশকারী.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েবে / জাভা স্ক্রিপ্ট / রেফারেন্স / It এটি কেবল ফায়ারফক্সে কাজ করে।
ইটিএইচ প্রডাকশনগুলি

3

জল্ফ +> <>, স্কোর = 2 ** 3/15 = 0.533 ...

"r0:g>o<
"Q«Q«

এটিতে অন্য একটি ভাষা যুক্ত করার বিষয়ে কাজ করা।


2

> <>, পাইথন 2 এবং 3, 3 টি ভাষা, 107 বাইট, স্কোর = 27/107 ~ = 0.252

#o<}-1:"
a=1/1is 1;b="(_%(_,b))"[a:-a|9];_='a=1/1is 1;b="(_%%(_,b))"[a:-a|9];_=%r;print %s';print (_%(_,b))

অনলাইনে এটি ব্যবহার করে দেখুন: পাইথন 2 , পাইথন 3 , > <>

পাইথন 3 আউটপুট হ'ল দ্বিতীয় লাইন, এবং পাইথন 2 আউটপুটটি এই কোয়াইন । > <> আউটপুট প্রথম লাইন।

ব্যাখ্যা

এই প্রোগ্রামটি ক্লাসিক পাইথন 2 কুইনের ভিত্তিতে তৈরি:

_='_=%r;print _%%_';print _%_

প্রথমে পাইথন 2 এবং পাইথন 3 উভয়ের সাথেই এটি সামঞ্জস্যপূর্ণ করার জন্য, আমি printবিবৃতিটি একটি ফাংশন কলে পরিবর্তন করেছি এবং একটি অতিরিক্ত স্থান যুক্ত করেছি যা পরে কাজে আসবে:

_='_=%r;print (_%%_)';print (_%_)

পরবর্তী, আমি পাইথন থেকে পাইথন 2 পার্থক্য একটি উপায় প্রয়োজন 3. সহজ উপায় হল যে সুবিধা গ্রহণ করতে হয় /পাইথন 2 বিভাজন পূর্ণসংখ্যা, কিন্তু ভাসা বিভাগের এভাবে পাইথন 3., নিম্নলিখিত কোড মূল্যায়ণ Trueপাইথন মধ্যে 2, তবে Falseপাইথন 3 এ:

1/1is 1

আউটপুটগুলি দুটি ভাষার মধ্যে স্বতন্ত্র করার জন্য, আমাকে printকলটিতে প্রথম এবং শেষ বন্ধনী নির্বাচন করে বেছে নেওয়া দরকার (এজন্য আমার আগে স্থানটির প্রয়োজন ছিল - কোনও স্থান নেই), এটি printপাইথন 2 তে একটি বৈধ বক্তব্য হবে না ) । সুতরাং, আমার মতো কুইন জোতাটি সংশোধন করা দরকার:

a=1/1is 1;b="(_%(_,b))"[a:-a|9];_='a=1/1is 1;b="(_%%(_,b))"[a:-a|9];_=%r;print %s';print (_%(_,b))

ভাবখানা এমন a:-a|9মূল্যায়ণ 0:9পাইথন 2 এবং 1:-1পাইথন 3 এভাবে bহয় "(_%(_,b))"পাইথন 3 কিন্তু পাইথন 2 প্রথম ও শেষ অক্ষর বাতিল করা হয় চলেই _%(_,b)। এবং সেই সংশোধনীর সাথে বহুভুজটি এই চ্যালেঞ্জের জন্য বৈধ ছিল।

টিল পেলিক্যানের পরামর্শ অনুসারে, পাইথনে একক-লাইনের মন্তব্য শুরু #o<}-1:"হওয়ার জন্য ধন্যবাদ <>> কুইনটি মোটামুটি সহজেই যুক্ত করা যায় #। কেবল এটির প্রিপেন্ডিং এবং একটি নতুন লাইন অন্য ভাষা যুক্ত করে এবং স্কোরকে প্রায় দশগুণ করে বাড়িয়ে তোলে।


1

পাইথন 2 + রেটিনা, 2 টি ভাষা, 55 বাইট, স্কোর = 2 ^ 3/55 ≈ 0.145

আমি তাদের উভয়কে বৈধ ASCII রাখার $nপরিবর্তে ব্যবহার করেছি।

S='S=%r;print S%%S';print S%S#|
#$n\(*S1`$n\(*S1`
#\`#

পাইথন , রেটিনা

পাইথন:

S='S=%r;print S%%S';print S%S

অক্ষিপট:


\(*S1`
\(*S1`

0

> <> + পাইকে + পাইথন 2, 81 বাইট, স্কোর = 3 ** 3/81 ~ 0.333

"""r00gol?!;60.
a=%r;print a%%a"""#);"34.Cp\D\Es"DEp00/
a=__doc__[-15:]
print a%a

আমি সমস্ত ভাষার সাথে আলাদা কিছু করার চেষ্টা করেছি।

> <> দেখেছে:

"""r00gol?!;60.

শুরুতে ট্রিপল কোটেড স্ট্রিংটি ব্যবহার করতে এটি স্ট্যান্ডার্ড> <> কুইনের একটি সামান্য পরিবর্তন। এটি পাইথনের জন্য শেষ ট্রিপল কোটগুলিকে আলাদা লাইনে থাকতে দেয়।

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

পাইক দেখেন:

"34.Cp\D\Es"DEp00/

আমি পাইকে একটি কুইন এর আগে তৈরি করিনি এবং এভাবে একটির কথা ভাবতে হয়েছিল। আমি স্ট্রিং তৈরি করতে প্রথাগত কুইনিং কৌশল ব্যবহার করেছি এবং তারপরে এটিকে একটি ইনপুট হিসাবে নিজের সাথে প্রমাণ করি। ভিজ্যুয়াল এফেক্ট ব্যতিরেকে কাজ করার জন্য দ্রষ্টব্য, সতর্কতাগুলি অক্ষম করতে হবে। প্রজন্মের পদক্ষেপে 0 টি ত্রুটি দ্বারা বিভাগের সাথে ত্রুটিগুলি out

এখানে চেষ্টা করুন! বা শুধু কোয়েন অংশ।

পাইথন দেখেছে:

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

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

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