সিউডো-কুইন বহুভুজ ভাষা-সনাক্তকরণ কাউন্টার


11

Quines মজা। পলিগ্লটগুলিও মজাদার। পলিগ্লট কুইন্স বিদ্যমান, তবে আমরা বারটি আরও উচ্চতর করতে পারি।

একটি ফাইল লিখুন যাতে languages, β, এবং languages ​​ভাষার জন্য একটি বৈধ প্রোগ্রাম থাকে γ যখন ফাইলটি ভাষা α বা β প্রোগ্রাম হিসাবে চালিত হয় (সম্ভবত এটি সংকলনের পরে) তখন প্রোগ্রামটির আউটপুট এই প্রতিযোগিতায় বৈধ জমা দেওয়ার মতোই ফর্ম হতে পারে। যদি আপনার ফাইলটি ভাষা γ প্রোগ্রাম হিসাবে কার্যকর করা হয় তবে এটি একটি সংখ্যাকে আউটপুট দেয়। এই সংখ্যার মান হ'ল বাইনারি সংখ্যা হিসাবে ব্যাখ্যা করা প্রোগ্রামটির পূর্ব নির্বাহের শৃঙ্খলা।

এই ব্যাখ্যাটি আন্ডারস্ট্যান করতে কিছুটা কঠিন হতে পারে, সুতরাং এখানে একটি উদাহরণ দেওয়া হল। আসুন Α, Β, এবং functions এমন ফাংশন হন যা তাদের ইনপুটটিকে ভাষা হিসাবে চালিত করে α, β, বা γ সম্মান। প্রোগ্রাম এবং এই প্রোগ্রামগুলির ফলাফল আউট। যাক এক্স এই প্রতিযোগিতার জন্য একটি বৈধ জমা হবে। তারপরে নিম্নলিখিত ক্রিয়াকলাপটি, যেখানে আমরা এই ক্রমে language, α, β, α, α, β, γ এবং language ভাষার মাধ্যমে x প্রসেস করব 41 থেকে 10 ফলস = 101001 2 , যেহেতু 41 প্রাপ্ত হবে ।

Γ (Β (Α (Α (Β (Α (Β ( x )))))))

আপনি ধরে নিতে পারেন না যে চেইনে পেনাল্টিমেট এক্সিকিউটরটি ভাষা language এ কার্যকর করা execution যে ক্ষেত্রে আপনার মূল জমাটি সরাসরি ভাষা γ প্রোগ্রাম হিসাবে কার্যকর করা হয়, এটি 0 মুদ্রণ করবে।

আপনার প্রোগ্রামটি চেইনে ষোলটি সংকলনের জন্য সঠিকভাবে আচরণ করবে; অর্থাৎ, আপনার প্রোগ্রামটি শেষের দিকে সর্বাধিক সংখ্যাটি মুদ্রণ করতে পারে 2 15 - 1 অবশ্যই, আপনার প্রোগ্রামটি দীর্ঘ সংকলন শৃঙ্খলা সমর্থন করার অনুমতিপ্রাপ্ত।

এটি সৃজনশীল সমাধানগুলিকে উত্সাহিত করার জন্য একটি জনপ্রিয়তা প্রতিযোগিতা। সর্বাধিক ভোটের সাথে জমা দেওয়া জয়ী হয়।


তিনটি ভাষা কি সমান হতে পারে (যদিও এটি প্রচুর পরিমাণে হ্রাস পাবে)?
জাগারব

6
@ জাগারব আমি এমন একটি সমাধান দেখতে পছন্দ করব যেখানে কয়েকটি (বা সমস্ত) ভাষা সমান। আসুন দেখুন কীভাবে আপনি সমান ভাষার পার্থক্য পরিচালনা করেন।
FUZxxl

1
...আমি দেখি. : ডিআই খুব তাড়াতাড়ি চ্যালেঞ্জটি পড়েন।
জাগারব

@ জগারব একই ভাষার বিভিন্ন সংস্করণ সম্পর্কে কীভাবে বলছেন? magic += Number(System.env.lang_version[-1])
জন ডিভোরাক

1
পরিবর্তে গ্রিক অক্ষর ব্যবহার করে বিরক্তিকর জন্য +1 a,b,cবা 1,2,3=)
flawr

উত্তর:


13

পাইথন 2, পাইথন 3,> <> (ফিশ)

#;n0
import sys
x='\\\'\nn#;n0import sysx=v=int(1/2*2)sys.stdout.write(x[4:7]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[7:8]),sys.stdout.write(x[2:3]),sys.stdout.write(x[8:18]),sys.stdout.write(x[2:3]),sys.stdout.write(x[18:20]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[3:4]),sys.stdout.write(x[4:7]),sys.stdout.write(x[7:8]),sys.stdout.write(x[8:18]),sys.stdout.write(x[18:20]),sys.stdout.write(x[20:32]),sys.stdout.write(x[32:851]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[1:2]),sys.stdout.write(x[2:3]),sys.stdout.write(x[20:32]),sys.stdout.write(x[2:3]),sys.stdout.write(x[32:851])n'
v=int(1/2*2)
sys.stdout.write(x[4:7]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[7:8]),sys.stdout.write(x[2:3]),sys.stdout.write(x[8:18]),sys.stdout.write(x[2:3]),sys.stdout.write(x[18:20]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[3:4]),sys.stdout.write(x[4:7]),sys.stdout.write(x[7:8]),sys.stdout.write(x[8:18]),sys.stdout.write(x[18:20]),sys.stdout.write(x[20:32]),sys.stdout.write(x[32:851]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[1:2]),sys.stdout.write(x[2:3]),sys.stdout.write(x[20:32]),sys.stdout.write(x[2:3]),sys.stdout.write(x[32:851])

পাইথন ব্যাখ্যা

পাইথন 2 এবং পাইথন 3 অনুবাদকারী একই রকমভাবে কাজ করে তবে v=int(1/2*2)চলকটি পৃথক মান ( 0এবং 1) পায় কারণ পাইথন 2 ফ্লোট বিভাগ এবং পাইথন 3 পূর্ণসংখ্যা বিভাগ ব্যবহার করে।

প্রতিটি রানে তারা এক্সপ্রেশন যুক্ত করে +0*2অথবা +1*2 প্রথম লাইনে (পরে #;n) এবং xস্ট্রিংয়ে (শেষ রাইট কমান্ডের পরে)। > <> দোভাষা প্রথম সংযোজন ব্যবহার করে এবং পাইথনস দ্বিতীয়টি সঠিক কুইন তৈরি করতে ব্যবহার করে।

পরে কোড B(A(B(B(x)))):

#;n+1*2+0*2+1*2+1*20
import sys
x='\\\'\nn#;n0import sysx=v=int(1/2*2)sys.stdout.write(x[4:7]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[7:8]),sys.stdout.write(x[2:3]),sys.stdout.write(x[8:18]),sys.stdout.write(x[2:3]),sys.stdout.write(x[18:20]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[3:4]),sys.stdout.write(x[4:7]),sys.stdout.write(x[7:8]),sys.stdout.write(x[8:18]),sys.stdout.write(x[18:20]),sys.stdout.write(x[20:32]),sys.stdout.write(x[32:851]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[1:2]),sys.stdout.write(x[2:3]),sys.stdout.write(x[20:32]),sys.stdout.write(x[2:3]),sys.stdout.write(x[32:851])+1*2+0*2+1*2+1*2n'
v=int(1/2*2)
sys.stdout.write(x[4:7]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[7:8]),sys.stdout.write(x[2:3]),sys.stdout.write(x[8:18]),sys.stdout.write(x[2:3]),sys.stdout.write(x[18:20]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[0:1]),sys.stdout.write(x[1:2]),sys.stdout.write(x[0:1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[3:4]),sys.stdout.write(x[4:7]),sys.stdout.write(x[7:8]),sys.stdout.write(x[8:18]),sys.stdout.write(x[18:20]),sys.stdout.write(x[20:32]),sys.stdout.write(x[32:851]),sys.stdout.write(chr(43)+str(v)+chr(42)+chr(50)),sys.stdout.write(x[851:-1]),sys.stdout.write(x[3:4]),sys.stdout.write(x[1:2]),sys.stdout.write(x[2:3]),sys.stdout.write(x[20:32]),sys.stdout.write(x[2:3]),sys.stdout.write(x[32:851])

> <> (ফিশ) ব্যাখ্যা

আপনি যখন <<> দোভাষী চালাবেন কোড পয়েন্টারটি #প্রথম লাইনের চারপাশে মোড়ানো থেকে ফিরে ফিরে প্রথম লাইনের শেষ থেকে শুরু হয়ে পশ্চিম দিকে যাওয়ার সময় স্ট্যাকের উপরে সংখ্যাগুলি ঠেলাঠেলি শুরু করে। যদি কোনও অপারেটর আসে ( +বা *) এটি স্ট্যাক থেকে শীর্ষ দুটি উপাদান পপ করে এবং ফলাফলটি পিছনে ঠেলে দেয়। এই পদ্ধতিটি সহ আমরা আগের রানগুলির বেস 2 উপস্থাপনাটি শেষ করি (পূর্ববর্তী 13উদাহরণে)। এটি পছন্দসই সংখ্যা তাই আমরা এটি দিয়ে আউটপুট nএবং এর সাথে সমাপ্ত করি ;


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