একটি পলিকুইন লিখুন


33

একটি পলিকুইন কোয়াইন এবং বহুভোজ উভয়ই। 1 আপনাকে একটি কুইন লিখতে হবে যা কমপক্ষে দুটি ভিন্ন ভাষায় বৈধ। এটি কোড গল্ফ, তাই সংক্ষিপ্ত উত্তরটি (বাইটে) জেতে।

1 আমি এটি তৈরি করেছি। বা বরং, জিওবিটস করেছে । স্পষ্টতই, তিনি প্রথমও ছিলেন না , যদিও।

কুইন্সের জন্য বিধি

শুধুমাত্র সত্য কুইন গ্রহণ করা হয়। অর্থাৎ আপনাকে সমগ্র উতস কোড, stdout- এ ধারণকৃত মুদ্রণ প্রয়োজন ছাড়া :

  • প্রত্যক্ষ বা অপ্রত্যক্ষভাবে আপনার উত্স কোডটি পড়ছেন।
  • একটি REPL পরিবেশের উপর নির্ভর করে যা কেবল আপনি খাওয়ানো প্রতিটি অভিব্যক্তি কেবল মূল্যায়ন করে এবং মুদ্রণ করে।
  • ভাষার বৈশিষ্ট্যগুলির উপর নির্ভর করে যা নির্দিষ্ট ক্ষেত্রে উত্সটি কেবল মুদ্রণ করে।
  • ত্রুটি বার্তা বা STDERR ব্যবহার করে কোয়েনের সমস্ত বা অংশ লিখতে। (আপনি STDERR এ জিনিস লিখতে পারেন বা সতর্কতা / অ-মারাত্মক ত্রুটি তৈরি করতে পারবেন যতক্ষণ না STDOUT বৈধ কুইন এবং ত্রুটি বার্তাগুলি এর অংশ না হয়))

তদ্ব্যতীত, আপনার কোড অবশ্যই একটি স্ট্রিং আক্ষরিক থাকতে হবে

পলিগ্লটসের বিধি

ব্যবহৃত দুটি ভাষা অবশ্যই পৃথক পৃথক হতে হবে। নির্দিষ্টভাবে:

  • সেগুলি অবশ্যই একই ভাষার পৃথক সংস্করণ নয় (যেমন পাইথন 2 বনাম পাইথন 3)।
  • সেগুলি একই ভাষার পৃথক উপভাষা হওয়া উচিত নয় (উদাঃ পাস্কাল বনাম ডেল্ফি)।
  • একটি ভাষা অন্য একটির উপসেট নাও হতে পারে (উদাঃ সি বনাম সি ++)।

4
"আপনার কোডটিতে অবশ্যই একটি স্ট্রিং আক্ষরিক থাকতে হবে " এমনকি এমন ভাষাগুলিতেও যেখানে স্ট্রেনের অক্ষর নেই, যেমন ব্রেনফাক?
পিটার ওলসন

@ পিটারঅলসন এই নিয়মের উদ্দেশ্য হ'ল গল্ফিং-নির্দিষ্ট ভাষাগুলিতে কয়েকটি ঘাটতি এড়ানো (যেমন এটি ) this যেহেতু আমি ধারণা করতে পারি না যে নিয়মটি সরানো বা দুর্বল করার ফলে কী হবে (এবং আমি একেবারে প্রয়োজনীয় না হলে নিয়ম পরিবর্তন করার অনুরাগী নই), তবে আমি দুঃখিত, তবে বিএফ জমা দেওয়া এই উদ্দেশ্যে কার্যকর হবে না চ্যালেঞ্জ। যদি এটি কোনও সান্ত্বনা থাকে তবে কোনও বিএফ জমা দেওয়া সম্ভবত কোনওভাবেই প্রতিযোগিতামূলক হতে পারে না। ;)
মার্টিন এন্ডার

1
"তিনিই প্রথম ছিলেন না" কোথায় লিঙ্ক?
এরিক আউটগল্ফার

2
সি আসলে সি ++ এর উপসেট নয়।
এমডি এক্সএফ 23'17

দুটি ভিন্ন ব্রেইনফ ** কে-ভিত্তিক ভাষাগুলি একই ভাষা হিসাবে গণনা করা হয় যেমন ব্রেনফ ** কে এবং এমওও?
MD XF

উত্তর:


14

সিজোম / গল্ফস্ক্রিপ্ট, 34 বাইট

{"__X.0#@@?LL
;~"N}__X.0#@@?LL
;~

বাইট গণনাটিতে একটি পেছনের লাইনফিড রয়েছে, যেহেতু প্রোগ্রামটি এটি ছাড়াই কোনও কুইন হবে না।

সিজাম এবং গল্ফস্ক্রিপ্ট কিছু দিকের ক্ষেত্রে খুব মিল থাকলেও অনেক পার্থক্য রয়েছে। এটি একটি "সৎ" পলিকুইন তৈরি করতে, আমি যথাসম্ভব পার্থক্যের উপর নির্ভর করার সিদ্ধান্ত নিয়েছি । ব্লক এবং স্ট্রিং সিনট্যাক্স ব্যতীত (যে ভাষাগুলি ওহ অনেকের সাথে ভাগ করে নেয়), কোডের কোনও অংশই উভয় ভাষায় ঠিক একই রকম হয় না achie

অনলাইন গল্ফস্ক্রিপ্ট ইন্টারপ্রেটারে একটি বাগ রয়েছে; এই প্রোগ্রামটি কেবলমাত্র সরকারী দোভাষীর সাথে কাজ করে।

উদাহরণ রান

$ cat polyquine
{"__X.0#@@?LL
;~"N}__X.0#@@?LL
;~
$ md5sum polyquine <(cjam polyquine) <(golfscript polyquine)
e2f1f3cd68abbbceec58080513f98d9a  polyquine
e2f1f3cd68abbbceec58080513f98d9a  /dev/fd/63
e2f1f3cd68abbbceec58080513f98d9a  /dev/fd/62

এটি কীভাবে কাজ করে (সিজেএম)

" Push that block.                                                                        ";

{"__X.0#@@?LL
;~"N}

" Push two copies of the block, 1 (computed as 1**0) and rotate the block copies on top.  ";

__X.0#@@

" If 1 is truthy (oh, the uncertainty), execute the first copy; else, execute the second.
  Evaluating the block pushes the string it contains; N pushes a linefeed.                ";

?

" Push two empty arrays.                                                                  ";

LL

" Discard one empty array and dump the second.                                            ";

;~

" (implicit) Print all items on the stack.                                                ";

এটি কীভাবে কাজ করে (গল্ফস্ক্রিপ্ট)

# Push that block.

{"__X.0#@@?LL
;~"N}

# Push a copy of the block; _ and X are noops, # initiates an inline comment.

__X.0#@@?LL

# Discard the 0 and execute the copy of the block.
# Evaluating the block pushes the string it contains; N is a noop.

;~

# (implicit) Print all items on the stack, followed by a linefeed.

সিজোম / গল্ফস্ক্রিপ্ট, 12 বাইট

{"0$~"N}0$~

প্রতারণামূলক সমাধান যা ভাষাগুলির পার্থক্য যতটা সম্ভব এড়ানো যায়।

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

এটি কীভাবে কাজ করে (সিজেএম)

 "0$~"       " Push that string.                                                          ";
      N      " Push a linefeed.                                                           ";
{      }0$~  " Push a copy of the block and execute it.                                   ";
             " (implicit) Print the stack.                                                ";

এটি কীভাবে কাজ করে (গল্ফস্ক্রিপ্ট)

 "0$~"       # Push that string.
      N      # Undefined token (noop).
{      }0$~  # Push a copy of the block and execute it.
             # (implicit) Print the stack, followed by a linefeed.

14

সি # / জাভা, 746 বাইট

আমি সেই সম্পত্তিটি ব্যবহার করি যা জাভাতে অক্ষরগুলি অভিন্ন ইউনিকোড ক্রম হিসাবে লেখা যেতে পারে। আমাদের কাছে জাভা সম্পর্কিত Aসি # সংকলক এবং Bনির্দেশনা থাকলে, আমরা নিম্নলিখিত কোড টুকরাটি ব্যবহার করতে পারি:

//\u000A\u002F\u002A
A//\u002A\u002FB

এটি সি # দিয়ে নিম্নলিখিত উপায়ে "স্বীকৃত" হবে:

//\u000A\u002F\u002A
A//\u002A\u002FB

এবং জাভা দ্বারা নিম্নলিখিত উপায় দ্বারা:

//
/*
A//*/B

কারণ \u000A, লাইন বিরতি হয় \u002Fহয় /এবং \u002Aহয় *জাভা।

সুতরাং চূড়ান্ত বহুগ্লোট-কুইন হ'ল:

//\u000A\u002F\u002A
using System;//\u002A\u002F
class Program{public static void//\u000A\u002F\u002A
Main//\u002A\u002Fmain
(String[]z){String s="//@#'^using System;//'#^class Program{public static void//@#'^Main//'#main^(String[]z){String s=!$!,t=s;int[]a=new int[]{33,94,38,64,35,39,36};String[]b=new String[]{!&!!,!&n!,!&&!,!&@!,!&#!,!&'!,s};for(int i=0;i<7;i++)t=t.//@#'^Replace//'#replace^(!!+(char)a[i],b[i]);//@#'^Console.Write//'#System.out.printf^(t);}}",t=s;int[]a=new int[]{33,94,38,64,35,39,36};String[]b=new String[]{"\"","\n","\\","\\u000A","\\u002F","\\u002A",s};for(int i=0;i<7;i++)t=t.//\u000A\u002F\u002A
Replace//\u002A\u002Freplace
(""+(char)a[i],b[i]);//\u000A\u002F\u002A
Console.Write//\u002A\u002FSystem.out.printf
(t);}}

তবে ভাষার ভার্বোসটির কারণে আকারটি খুব বিশাল huge

সংকলন আইডোন.কম এ উপলব্ধ: সি # , জাভা


3
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ সম্প্রদায় আপনাকে স্বাগতম!
এরিক আউটগলফার

2
আমি জানি এটি প্রায় দুই বছর হয়েছে, তবে আপনি 58 বাইট গল্ফ করতে পারেন। এটি অনলাইন জাভা চেষ্টা করে দেখুন। এবং এটি অনলাইন সি #। নেট চেষ্টা করুন।
কেভিন ক্রুইজসেন

আপনার মানে কি 688 বাইট?
ইভান কোচুরকিন

13

পাইথন 3 এবং জাভাস্ক্রিপ্ট, 134 বাইট

এখানে আমার (চূড়ান্ত?) প্রচেষ্টা:

a='eval(a.split(" ")[2%-4]),1//2# q=String.fromCharCode(39);console.log("a="+q+a+q+a.slice(-8)) print(a[-12:]%a) a=%r;eval(a)';eval(a)

এটি সম্ভবত আরও কিছুটা গল্ফ করা যেতে পারে, বিশেষত যদি কেউ জাভাস্ক্রিপ্টে একক উদ্ধৃতি পাওয়ার আরও ভাল উপায় জানে।


সিদ্ধ হয়ে, প্রোগ্রামটি এরকম দেখাচ্ছে:

a='a long string';eval(a)

eval()ফাংশন উভয় ভাষায় এক্সপ্রেশন মূল্যায়ন করবো। সুতরাং দীর্ঘ স্ট্রিং কার্যকর করা হবে:

eval(a.split(" ")[2%-4]),1//2# ... the rest gets commented out

এটি ফাঁকা দ্বারা দীর্ঘ স্ট্রিং বিভক্ত হয় এবং দ্বারা সূচকযুক্ত স্ট্রিংয়ের মূল্যায়ন করে 2%-4। জাভাস্ক্রিপ্ট তৃতীয় সাবস্ট্রিং ( 2 % -4 == 2) এবং পাইথন দ্বিতীয় শেষ ( 2 % -4 == -2) চালাবে কারণ তাদের মডুলো অপারেটরগুলি নেতিবাচকদের জন্য আলাদা আচরণ করে।

উভয় ভাষায় বাকী স্ট্রিং উপেক্ষা করা হয়। জাভাস্ক্রিপ্টটি থামবে //, অন্যদিকে পাইথন এটিকে পূর্ণসংখ্যা বিভাগ হিসাবে দেখবে এবং এটিতে থামবে #

সুতরাং জাভাস্ক্রিপ্ট এখানে কনসোল উত্স কোড মুদ্রণ:

q=String.fromCharCode(39);console.log("a="+q+a+q+a.slice(-8))

এবং পাইথন এখানে:

print(a[-12:]%a)

উভয়ই স্ট্রিংয়ের চূড়ান্ত অংশটি ব্যবহার করে যা প্রোগ্রামটির একটি টেমপ্লেট:

a=%r;eval(a)

+1 টি 140 বাইট এটা Golfed: a='print(a[78:]%a)1q=String.fromCharCode(39);console.log("a="+q+a+q+a.slice(82))1a=%r;eval(a.split(1)[0|0=="0"])';eval(a.split(1)[0|0=="0"])। জাভাস্ক্রিপ্টে পরীক্ষিত কিন্তু অজগর নয় ... তবে এটি কাজ করা উচিত।
soktinpk

@ সোক্তিনপক ধন্যবাদ, তবে পাইথন অনুমতি দেবে বলে আমি মনে করি না a.split(1)
grc

1
-8 বাইট:q=unescape("%27")
প্যাট্রিক রবার্টস

8

রুবি / পার্ল / পিএইচপি, 52

$b='$b=%c%s%c;printf$b,39,$b,39;';printf$b,39,$b,39;

ক্রিস্টোফার ডুরের পার্ল কুইন থেকে কপি করা ভারব্যাটিয়াম।

এটি নিয়মের অপব্যবহার। রুবি এবং পার্ল অবশ্যই ভাষা হিসাবে একই নয়, বা পার্ল রুবির একটি উপসেট নয় (উদাহরণস্বরূপ, লিঙ্কযুক্ত পার্ল কুইনগুলির বেশিরভাগ রুবিতে কাজ করে না)। তবে রুবি এমনভাবে তৈরি করা হয়েছিল যাতে আপনি পার্লের মতো দেখতে চাইলে অনেকটা দেখতে সক্ষম হন এবং গল্ফ করার সময় এটি অনেক ঘটে।


এটি কি পিএইচপি-তেও কাজ করার জন্য তৈরি করা যেতে পারে (বা এটি ইতিমধ্যে রয়েছে)? আমি যদি ডকটি সঠিকভাবে পড়ছি তবে আপনি এটি কমান্ড লাইনে চালাতে পারেন -Rএবং আপনার স্ক্রিপ্ট ট্যাগের প্রয়োজন নেই। php.net/manual/en/features.commandline.options.php
hmatt1

আমি এটিকে নিয়ম আপত্তি বলব না। দুটি ভাষার ছেদ ছেয়ে কাজ করে এমন একটি কুইন খুঁজে পাওয়া এই প্রশ্নের কাছে যাওয়ার পক্ষে একটি কার্যকর উপায়। তবে এটি আপনার নিজের কাজ নয়, আপনি যদি এটি সম্প্রদায় উইকি হিসাবে চিহ্নিত করেন তবে আমি পছন্দ করব।
মার্টিন এন্ডার

@ চিলিমাজিক আসলে এটা করে!
হিস্টোক্র্যাট

@ মার্টিনব্যাটনার শেষ হয়েছে।
হিস্টোক্র্যাট

6

বাশ / গল্ফস্ক্রিপ্ট, 73

.~0 () 
{ 
    declare "-f" @* ".~0" " () 
"+@n.;
    echo '.~0;'
}
.~0;

প্রথম 3 লাইনের প্রতিটিটিতে একটি পিছনের স্থান রয়েছে।

বাশ / গল্ফস্ক্রিপ্ট, 78

alias :a~a.='eval "alias :a~a."\
;set [61 39]+a[39]+n"":a;echo ":a~a."'
:a~a.

5

পিএইচপি / পার্ল - 171

#<?PHP$s=1;$t="";
$a='%s<%cPHP$s=1;$t="";%c$a=%c%s%c;$t==$s?$t="#":$s;printf($a,$t,63,10,39,$a,39,10,63);%c#%c>';$t==$s?$t="#":$s;printf($a,$t,63,10,39,$a,39,10,63);
#?>

সাথে চালান:

$ php quine.pl
$ perl quine.pl

phpকোড আসলে চলমান (ঠিক নিজেই মুদ্রণ না)।


5

বাশ / রুবি, 104 82

"tee`#";puts <<a*2+'a'#`" -<<'a';echo a
"tee`#";puts <<a*2+'a'#`" -<<'a';echo a
a

পুরানো সংস্করণ:

"alias" "puts=f()(tee -;echo a);f"
puts <<a *2+"a"
"alias" "puts=f()(tee -;echo a);f"
puts <<a *2+"a"
a

বাশ / রুবি, 128 অপরিবর্তিত আচরণ ছাড়াই

"alias" 'puts=f()(a=`cat`;echo "$a
$a
a");f'
puts <<'a' *2+"a"
"alias" 'puts=f()(a=`cat`;echo "$a
$a
a");f'
puts <<'a' *2+"a"
a

বাহ, রুবি কোড কীভাবে কাজ করে তা আমি বুঝতেও পারি না: ডি
মার্টিন এন্ডার

@ রুবিতে মার্টিনব্যাটনার <<aঠিক বাশের মতোই কাজ করে তবে একটি স্ট্রিং দেয়। আমি এর আগে রুবি প্রোগ্রাম লিখিনি। আমি এই বৈশিষ্ট্যটি সহ একটি এলোমেলো ভাষা পেয়েছি।
jimmy23013

আমি জানি না এটি বাশে কীভাবে কাজ করে: পি
মার্টিন এন্ডার

@ মার্টিনবাটনার এটিকে হেরডোক বলা হয়। <<wordএকটি একক দিয়ে একটি লাইনের দ্বারা বন্ধ স্ট্রিং প্রদান করে word
jimmy23013

5

রেটিকুলার / বেফঞ্জ -৮৮, ২৮ বাইট

<@,+1!',k- ';';Oc'43'q@$;!0"

রেটিকুলার চেষ্টা করুন! বেফન્જ 98 ব্যবহার করে দেখুন!

মধ্যে মধ্যে কিছু ;befunge মধ্যে গুলি উপেক্ষা করা হয়, এবং !মধ্যে সেগমেন্ট মধ্যে ছেড়ে যাওয়া ;জালি জন্য গুলি। সুতরাং, রেটিকুলার দেখেছে:

<@,+1!',k- ';';Oc'43'q@$;!0"
<                             move left
                           "  capture string
                          0   push zero
                        ;!    skip `;` (end program)
                       $      drop zero
                     q@       reverse TOS
                 '43'         push 34 (")
                c             convert to char
               O              output all
              ;               end program

বেফুঞ্জ দেখে:

<@,+1!',k- ';';Oc'43'q@$;!0"
<                            move left
                           " capture string
                         !0  push 1
              ;         ;    skip this
         - ';'               push 27
       ,k                    output top 27 chars
   +1!'                      push 34 (")
  ,                          output "
 @                           end program

4

রুবি / ম্যাথমেটিকা, 225 বাইট

এখানে আমার নিজস্ব অত্যন্ত প্রহারযোগ্য পলোকুইন (যা উদাহরণ এবং প্রমাণের ধারণা হিসাবে কাজ করে):

s="s=%p;puts s%%s;#Print[StringReplace[s,{(f=FromCharacterCode)@{37,112}->ToString@InputForm@s,f@{37,37}->f@37}]]&@1";puts s%s;#Print[StringReplace[s,{(f=FromCharacterCode)@{37,112}->ToString@InputForm@s,f@{37,37}->f@37}]]&@1

প্রথম অংশটি এই রুবি কুইনের উপর ভিত্তি করে এবং মূলত:

s="s=%p;puts s%%s;#MathematicaCode";puts s%s;#MathematicaCode

স্ট্রিং অ্যাসাইনমেন্ট ম্যাথমেটিকায় হুবহু একই রকম। puts s%s: 4 চিহ্নগুলির একটি পণ্য হিসাবে ব্যাখ্যা করা হয় puts, স্ট্রিং s, %(অথবা শেষ REPL ফলাফলের Out[0]এটি প্রথম অভিব্যক্তি আপনি মূল্যায়ন যদি) এবং অন্য s। এটি অবশ্যই সম্পূর্ণ অর্থহীন, তবে ম্যাথমেটিকা ;কোনও আউটপুট যত্ন করে না এবং দমন করে না , তাই এটি কেবল নিঃশব্দে প্রক্রিয়াজাত হয়। তারপরে #ম্যাথমেটিকা ​​চালিয়ে যাওয়ার সময় বাকী রেখাকে রুবির জন্য একটি মন্তব্য করে।

ম্যাথমেটিকা ​​কোড হিসাবে, এর বৃহত্তম অংশটি হ'ল কোনও স্ট্রিং ল্যাটারাল ব্যবহার না করেই রুবির ফর্ম্যাট স্ট্রিং প্রসেসিংটি অনুকরণ করা। FromCharacterCode@{37,112}হয় %pএবং FromCharacterCode@{37,112}হয় %%। পূর্ববর্তীটি নিজেই স্ট্রিংয়ের সাথে প্রতিস্থাপিত হয়, (যেখানে InputFormকোটগুলি যোগ করে) পরে এককটি দিয়ে %। ফলাফল Printএড। চূড়ান্ত ক্যাচটি হল #সামনের দিকে এটি কীভাবে ডিল করা যায়। খাঁটি (বেনামে) ফাংশনের প্রথম যুক্তির জন্য এটি গণিতের প্রতীক। তাই আমরা যা আমরা করতে সংযোজন করে যে একটি বিশুদ্ধ ফাংশনের সব &এবং অবিলম্বে আর্গুমেন্ট সহ ফাংশন ডাকা 1। একটি Prepending 1একটি ফাংশন কল "তা বৃদ্ধি পায়" সঙ্গে ফলাফল1, যা ম্যাথমেটিকাকে আবার গ্রাস করে কোন ধরণের জিনিস ফাংশন দিয়ে ফিরে আসে তা নির্বিশেষে।


2

> <> এবং সিজেম, 165 বাইট

"~~~~~~~~~~~~~~~~~~~~~~~r00gol?!v93*0.Hi
'                               <       .1*5av!?log10oar~~~r
'"`{"`"\"_~e#.21 <.2+4*96;!?log10oa"}_~e#.21 <.2+4*96;!?log10oa

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

প্রতি> <> এ, প্রথমে "একটি স্ট্রিং আক্ষরিক শুরু হয় যা পুরো প্রথম সারিতে যায় এবং প্রতিটি অক্ষরকে স্ট্যাকের দিকে ঠেলে দেয়। এর পরে, পিছনের স্থানগুলি (ইনপুট প্যাড হওয়ার কারণে তৈরি) মুছে ফেলা হয় এবং তারপরে স্ট্যাকটি বিপরীত হয়। স্ট্যাকের প্রতিটি অক্ষর (যেমন পুরো প্রথম সারি) আউটপুট হয় এবং তারপরে এটি দ্বিতীয় সারিতে নেমে যায়।

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

শেষ পর্যন্ত এটি তৃতীয় লাইনে চলে যায়। একমাত্র প্রধান পার্থক্য হ'ল আপনাকে অবশ্যই সিজেম ব্লকটি এড়িয়ে যেতে হবে, যা ব্যবহার করে সম্পন্ন করা হয় .একক উদ্ধৃতি পুরো লাইনটি (আবার, পিছনের দিকে) ক্যাপচার করে, এবং তারপরে এটি আউটপুট।


2

সি / পিএইচপি, 266 304 300 282 241 203 + 10 বাইট

//<?php
function main($a){printf($a="%c//<?php%cfunction main(%ca){printf(%ca=%c%s%c,13,10,36,36,34,%ca,34,36,10,10,10);}%c#if 0%cmain();%c#endif",13,10,36,36,34,$a,34,36,10,10,10);}
#if 0
main();
#endif

+10 বাইট কারণ সিতে সংকলন করতে জিসিসি সংকলক পতাকা প্রয়োজন -Dfunction=

এটি কীভাবে কাজ করে (পিএইচপিতে):

  • পিএইচপি ইন্টারপ্রেটার কেবল <?phpHTML এর আগে সবকিছু মুদ্রণ করে । //এইচটিএমএলে কোনও মন্তব্য নয়, তাই এটি কেবল মুদ্রিত।
  • mainএকটি ভেরিয়েবল সহ একটি ফাংশন হিসাবে ঘোষণা করা হয় a
  • printf//মানক সি / পিএইচপি কুইন পদ্ধতি ব্যবহার করে একটি ক্যারেজ রিটার্ন (ইতিমধ্যে মুদ্রিত ওভাররাইড করতে ) এবং তারপরে উত্স কোড মুদ্রণ করে।
  • #if 0 পিএইচপি দ্বারা উপেক্ষা করা হয়।
  • main($a)একটি খালি ভেরিয়েবল সূচনা করে a। (পূর্বে error_reporting(0)কল করার ফলে ঘটে যাওয়া ত্রুটিগুলি উপেক্ষা করার জন্য ব্যবহৃত হত main())
  • #endif পিএইচপি দ্বারা উপেক্ষা করা হয়।

এটি কীভাবে কাজ করে (সি তে):

  • //<?php এটি একটি একক লাইনের মন্তব্য, সুতরাং এটি উপেক্ষা করা হবে।
  • functionশব্দ কম্যান্ড-লাইন কম্পাইলার যুক্তি কারণে উপেক্ষা করা হয় -Dfunction=
  • ভেরিয়েবলগুলি শুরু হয় বা থাকে কিনা তা জিসিসি এবং ক্ল্যাং যত্ন করে না $। (এটি দিনটি বাঁচিয়েছিল))
  • printf একটি স্ট্যান্ডার্ড সি / পিএইচপি কুইন পদ্ধতি ব্যবহার করে একটি ক্যারিজ রিটার্ন (এই উদাহরণে অকেজো) এবং উত্স কোড মুদ্রণ করে।
  • #if 0অবধি সমস্ত কিছু উপেক্ষা করে endif, যাতে পিএইচপি কল করতে পারে main
  • #endif "আমাকে উপেক্ষা করুন" ব্লকটি শেষ করে।

2

উইম্পাস / > <> / বেফুঞ্জ -98 28 বাইট

"]#34[~#28&o@,k+deg0 #o#!g00

উম্পাসে চেষ্টা করে দেখুন! , এটিতে চেষ্টা করুন> <>! , বেফুঞ্জ -98 এ চেষ্টা করে দেখুন!

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

উইম্পাস কোড:

  " Start string literal
    Bounce off end of line and come back
  " End string literal
   ] Push top of stack to bottom
    #34 Push double quote
       [~ Get bottom of stack and swap it with the double quote
         #28 Push 28
            &o@ Print the top 28 items on stack and terminate program

> <> কোড:

  " Start string literal
    Wrap when it reaches the end of the line
  " End string literal
   ]# Clear stack and reflect
  " Wrapping string literal again, but backwards
                     g00 Get the character from cell 0 (")
                 #o#! Skip into the printing loop
                      Exit with an error

বেফঙ্গ -98 কোড:

  " Wrapping string literal
   ] Turn right
   ] Turn right again, going West
  " Wrapping string literal going West
                 !g00 Get double quote and invert it
              #o# Skip over the o instruction
           g0   Get double quote
        +de Push 27
     @,k    Print 27+1 items from the stack and terminate program.

1

05 এ বি 1 ই / 2 এসবেবল, 14 বাইট, প্রতিদ্বন্দ্বী

0"D34çý"D34çý

এটি অনলাইন চেষ্টা করুন! (05AB1E)
এটি অনলাইনে চেষ্টা করুন! (2sable)

2sable 05AB1E থেকে উদ্ভূত এবং অনুরূপ, তবে বড় পার্থক্য রয়েছে।

ট্রেলিং নিউলাইন।


1
2sable এবং 05AB1E এর বর্তমান অবস্থা কী তা আমি জানি না, তবে গতবার আমি যাচাই করেছিলাম এগুলিকে একটি ভাষার আলাদা উপভাষা হিসাবে বিবেচনা করতাম।
মার্টিন ইন্ডার

1

সি / টিসিএল, 337 বাইট

#define set char*f= 
#define F 
#define proc main(){ 
set F "#define set char*f= 
#define F 
#define proc main(){ 
set F %c%s%c; 
proc /* {} {} 
puts -nonewline %cformat %cF 34 %cF 34 91 36 36] 
set a {*/printf(f,34,f,34,91,36,36);} 
"; 
proc /* {} {} 
puts -nonewline [format $F 34 $F 34 91 36 36] 
set a {*/printf(f,34,f,34,91,36,36);} 

1

সি / ভিম 4.0, 1636 বাইট

নিয়ন্ত্রণের অক্ষর ধারণ করে।

map () {}/*
map g ;data0df"f"cf"
f"cf"
f"D2kyyP;g6k2dd4x5jA"JxA","JxA","jyyPkJxA"jok;g2kdd4xkJx3jdd
map ;g O"vdldd0i# 0# 1# 2# 3# 4# 5# #0lx2lx2lx2lx2lx2lx2lx:s/##/#/g
o:s//"/gk0y2lj02lp"addk@ao:s//\\/gk0ly2lj02lp"addk@ao:s///gk04ly2lj02lp05l"vp"addk@ao:s///gk05ly2lj02lp05l"vp"vp"addk@ao:s//
/gk06ly2lj02lp05l"vp"vp"vp"addk@ao:s//
/gk02ly2lj02lp05l"vp"addk@a
unmap ()

map ;data o*/ char*g[]={"map () {}/*#2map g ;data0df#0f#0cf#0#5#3f#0cf#0#5#3f#0D2kyyP;g6k2dd4x5jA#0#3JxA#0,#0#3JxA#0,#0#3jyyPkJxA#0#3jo#3k;g2kdd4xkJx3jdd#2map ;g O#4#4#4#4#3#0vdldd0i## 0## 1## 2## 3## 4## 5## ###30lx2lx2lx2lx2lx2lx2lx:s/####/##/g#5o:s//#0/g#3k0y2lj02lp#0addk@ao:s//#1#1/g#3k0ly2lj02lp#0addk@ao:s//#4#4#3/g#3k04ly2lj02lp05l#0vp#0addk@ao:s///g#3k05ly2lj02lp05l#0vp#0vp#0addk@ao:s//#4#4#5/g#3k06ly2lj02lp05l#0vp#0vp#0vp#0addk@ao:s//#4#4#5/g#3k02ly2lj02lp05l#0vp#0addk@a#2unmap ()#2#2map ;data o*/ char*g[]={","#A#0#a#0,#0#b#0,#0#c#0#C#2","}; /*#3#2#2#0*/  print(char*s){char*t=s,c,d;while(c=*t++)if(c==35){c=*t++;if(c==35)putchar(c);else if(c==48)putchar(34);else if(c==49)putchar(92);else if(c==50)printf(#0#1n#0);else if(c==51)putchar(27);else if(c==52)putchar(22);else if(c==53)putchar(13);else if(c>64&&c<91)print(g[c-65]);else printf(g[c-97]);}else putchar(c);}  main(){print(g[1]);}"}; /*

"*/  print(char*s){char*t=s,c,d;while(c=*t++)if(c==35){c=*t++;if(c==35)putchar(c);else if(c==48)putchar(34);else if(c==49)putchar(92);else if(c==50)printf("\n");else if(c==51)putchar(27);else if(c==52)putchar(22);else if(c==53)putchar(13);else if(c>64&&c<91)print(g[c-65]);else printf(g[c-97]);}else putchar(c);}  main(){print(g[1]);}

আপনার ভিমে নিম্নলিখিত সেট থাকা দরকার:

set noai
set wm=0
set nosi
set tw=0
set nogdefault

1

সি / লিস্প, 555 বাইট

t(setq /*;*/){}main(){char q='\"',s='\\';char*a= 
"~%t(setq /*;*/){}main(){char q='~A';char*a= 
~S;char*b=/* 
)(setq a ~S) 
(setq */ ~S;printf(b,s,q,s,s,q,a,q,q,s,s,s,q,s,s,s,s,q,q,b,q/* 
)(format t /* a /* a */);}~%";char*b=/* 
)(setq a "\\\"',s='\\\\") 
(setq */ " 
t(setq /*;*/){}main(){char q='%c%c',s='%c%c';char*a= 
%c%s%c;char*b=/* 
)(setq a %c%c%c%c%c',s='%c%c%c%c%c) 
(setq */ %c%s%c;printf(b,s,q,s,s,q,a,q,q,s,s,s,q,s,s,s,s,q,q,b,q/* 
)(format t /* a /* a */);} 
";printf(b,s,q,s,s,q,a,q,q,s,s,s,q,s,s,s,s,q,q,b,q/* 
)(format t /* a /* a */);} 

ইচ্ছাকৃতভাবে ফাঁকা প্রথম লাইন।


1

পার্ল / জাভাস্ক্রিপ্ট (স্পাইডারমনকি), 106 বাইট

$_='$q=+[]?h^O:unescape("%27");print("$_="+$q+$_+$q+";eval($_)"||(q($_),"=$q$_$q;",q(eval($_))))';eval($_)

অনলাইন পার্ল চেষ্টা করুন!
অনলাইনে জাভাস্ক্রিপ্ট চেষ্টা করে দেখুন!

ব্যাখ্যা

কুইন ডেটা $_উভয় ভাষায় সংরক্ষণ করা হয় এবং তারপরে evalএড, যা পার্লের বেশ মানক পদ্ধতি। আমি টিআইওতে স্পাইডারমনিকে বেছে নিয়েছিলাম কারণ এটির একটি printকার্যকারিতা রয়েছে, তবে এটি সহজেই + 20 বাইটের জন্য ব্রাউজারে পোর্ট করা যায় ( eval("print=alert");শুরুতে যুক্ত করুন$_ এর সংজ্ঞাটির )।

পার্ল এতে সঞ্চিত ডেটা দেখে $_এবং evalএটি যথারীতি s যেহেতু +[]পার্ল মধ্যে truthy হয়, 'মধ্যে সংরক্ষিত হয় $qএর stringwise-XOR যাও মাধ্যমে hএবং O। চূড়ান্ত কৌশলটি printজাভাস্ক্রিপ্টের প্রথম অংশটি ব্যবহার করার জন্য কলটিতে রয়েছে +, যা পার্ল সমস্ত আইটেমকে সংখ্যা হিসাবে বিবেচনা করে এবং আরও যোগ করে 0, তারপরে আমরা ||অপারেটরটি ব্যবহার করি (q($_),"=$q$_$q;",q(eval($_)))যা আমরা আসলে যা চাই তার সমতুল্য"\$_=$q$_$q;eval(\$_)"

জাভাস্ক্রিপ্টে, +[]আয় 0, তাই আমরা কল unescape("%27")দোকান থেকে '$q(দুর্ভাগ্যক্রমে, atobdoesm't থাকবেই SpirderMonkey করুন ...)। কলটিতে print, যেহেতু +জাভাস্ক্রিপ্টে সংক্ষেপণ অপারেটর, তাই প্রথম ব্লকটি পছন্দসই আউটপুট তৈরি করে এবং দ্বিতীয় অংশটিকে ||অগ্রাহ্য করার পরে তৈরি করে ।

কৌতুকের জন্য প্যাট্রিক রবার্টসের মন্তব্যকে ধন্যবাদ unescape!


পার্ল / জাভাস্ক্রিপ্ট (ব্রাউজার), 108 বাইট

$_='eval("q=_=>_+``;printf=console.log");printf(q`$_=%s%s%s;eval($_)`,$q=+[]?h^O:atob("Jw"),$_,$q)';eval($_)

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

$_='eval("q=_=>_+``;printf=console.log");printf(q`$_=%s%s%s;eval($_)`,$q=+[]?h^O:atob("Jw"),$_,$q)';eval($_)

ব্যাখ্যা

আমরা $_উভয় ভাষায় কুইন ডেটা সংরক্ষণ করি এবং তারপরে evalএটি, যা পার্লের বেশ মানক পদ্ধতি।

পার্ল এতে সঞ্চিত ডেটা দেখে $_এবং evalএটি যথারীতি s এর evalমধ্যে $_সম্পাদিত হয় এবং পার্স করতে ব্যর্থ হয় তবে এটি যেহেতু evalত্রুটি করে না। printfতারপর, বলা হয় একটি একক উদ্ধৃত স্ট্রিং সঙ্গে q()সঙ্গে `delimter হিসাবে, শুধু ব্যবহার `কমান্ড স্থাপিত হবে তারপর প্রথম ব্যবহারের জন্য শেল মধ্যে মৃত্যুদন্ড কার্যকর হচ্ছে, $qযেহেতু +[]পার্ল মধ্যে truthy হয়, 'মধ্যে সংরক্ষিত হয় $qএর stringwise-XOR যাও মাধ্যমে hএবংO

জাভাস্ক্রিপ্টে, evalমধ্যে ব্লক $_একটি ফাংশন সেট আপ q, যে returnএকটি তার যুক্তি গুলি Stringএবং alias লেখা console.logথেকে printf, যেহেতু console.logমত ফরম্যাটের স্ট্রিং printfপার্ল হবে। কখন রিটার্ন printfবলা হয় , তাই আমরা ডিকোড এবং স্টোরটি করতে কল করি ।+[]0atob'$q


1

পার্ল 5 / রুবি / জাভাস্ক্রিপ্ট (নোড.জেএস) / ব্যাশ / পাইথন 2 / পিএইচপি , 1031 বাইট

s=1//2;_=r'''<?#/.__id__;s=+0;#';read -d '' q<<'';s=\';Q='echo s=1//2\;_=r$s$s$s\<\?\#/.__id__\;s=+0\;#$s\;read -d $s$s q\<\<$s$s\;s=\\$s\;Q=$s$Q$s\;eval\ \$Q;echo $q';eval $Q
$_='eval("0"?0?"def strtr(s,f,t);s.tr(f,t) end;class String;def chr(n);self+n.chr end;end":"$u=strtr=(s,f,t)=>[...f].reduce((s,a,i)=>s.replace(RegExp(a,`g`),t[i]),s);printf=console.log;(S=String).prototype.chr=function(n){return this+S.fromCharCode(n)}":[]&&"sub strtr{eval q(q(X)=~y/X/X/r)=~s/X/shift/ger}");printf(strtr("%s<?#/.__id__;s=+0;#j;read -d jj q<<jj;s=zj;Q=jecho s=1//2z;_=rksksksz<z?z#/.__id__z;s=+0z;#ksz;read -d ksks qz<z<ksksz;s=zzksz;Q=kskQksz;evalz zkQ;echo kqj;eval kQwk_=j%sj;eval(k_);//;#jjj;f=jjjs=1//2;_=r%%s%%s%%s;f=%%s%%s%%s;q=_[18]*3;print f%%%%(q,_,q,q,f,q)jjj;q=_[18]*3;print f%%(q,_,q,q,f,q)%s","jkwz","".chr(39).chr(36).chr(10).chr(92).chr(92)),[]&&"s=1//2;_=r".chr(39).chr(39).chr(39),$_,$u?"":"".chr(10));';eval($_);//;#''';f='''s=1//2;_=r%s%s%s;f=%s%s%s;q=_[18]*3;print f%%(q,_,q,q,f,q)''';q=_[18]*3;print f%(q,_,q,q,f,q)

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

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


বিকল্প পার্ল 5 / রুবি / জাভাস্ক্রিপ্ট (নোড.জেএস) / ব্যাশ / পাইথন 2 / পিএইচপি , 1040 বাইট

s=1//2;_=r'''<?#/.__id__;s=+0;#';read -d '' q<<'';s=\';Q='echo s=1//2\;_=r$s$s$s\<\?\#/.__id__\;s=+0\;#$s\;read -d $s$s q\<\<$s$s\;s=\\$s\;Q=$s$Q$s\;eval\ \$Q;echo $q';eval $Q
$_='$z=0?"$&".next+92 .chr+10 .chr: 0..a||eval("printf=console.log;unescape`$%27%5C%0Ak`");$q=$z[1]?$z[1]:h^O;printf("%s%s%s%s<?#/.__id__;s=+0;#%s;read -d %s%s q<<%s%s;s=%s%s;Q=%secho s=1//2%s;_=r%ss%ss%ss%s<%s?%s#/.__id__%s;s=+0%s;#%ss%s;read -d %ss%ss q%s<%s<%ss%ss%s;s=%s%s%ss%s;Q=%ss%sQ%ss%s;eval%s %s%sQ;echo %sq%s;eval %sQ%s%s_=%s%s%s;eval(%s_);//;#%s%s%s;f=%s%s%ss=1//2;_=r%%s%%s%%s;f=%%s%%s%%s;q=_[18]*3;print f%%%%(q,_,q,q,f,q)%s%s%s;q=_[18]*3;print f%%(q,_,q,q,f,q)%s",[]&&"s=1//2;_=r",$r=[]&&$q,$r,$r,$q,$q,$q,$q,$q,$b=$z[2]?$z[2]:chr(92),$q,$q,$b,$d=$z[0]?$z[0]:h^L,$d,$d,$b,$b,$b,$b,$b,$d,$b,$d,$d,$b,$b,$d,$d,$b,$b,$b,$d,$b,$d,$d,$d,$b,$b,$b,$d,$d,$q,$d,$n=$z[3]?$z[3]:chr(10),$d,$q,$_,$q,$d,$q,$q,$q,$q,$q,$q,$q,$q,$q,$z[4]?"":$n);';eval($_);//;#''';f='''s=1//2;_=r%s%s%s;f=%s%s%s;q=_[18]*3;print f%%(q,_,q,q,f,q)''';q=_[18]*3;print f%(q,_,q,q,f,q)

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

আমার আসল পদ্ধতির থেকে কিছুটা কাছাকাছি, তবে এর জন্য আর্গের পুনরাবৃত্তি printfএখনও উন্মাদ। পরিবর্তে অবস্থানীয় আর্গুমেন্ট ব্যবহার করে এটি কেবল ক্রোমে কাজ করে এবং পিএইচপি-তে কাজ করা ততটা জটিল কারণ $sইন %1$sইন্টারপোল্টেড, তবে সম্ভবত দুটি পদ্ধতির সংমিশ্রণ ব্যবহার করে প্রচুর বাইট সংরক্ষণ করতে পারে ...


0

সি / ডিসি, 152 বাইট

z1d//[[z1d//]P91PP93P[dx]Pq 
;main(){char*a="z1d//[[z1d//]P91PP93P[dx]Pq%c;main(){char*a=%c%s%c;printf(a,10,34,a,34);}//]dx";printf(a,10,34,a,34);}//]dx

মন্তব্যের সুযোগ নিয়ে হ্যাঁ!


0

পার্ল 5 / রুবি / পিএইচপি / জাভাস্ক্রিপ্ট (ব্রাউজার), 153 বাইট

$_='$z=0?"$&".next: 0..a||eval("printf=console.log;atob`JCc`");printf("%s_=%s%s%s;eval(%s_);",$d=$z[0]?$z[0]:h^L,$q=$z[1]?$z[1]:h^O,$_,$q,$d);';eval($_);

অনলাইন পার্ল চেষ্টা করুন!
অনলাইনে রুবি ব্যবহার করে দেখুন!
অনলাইনে পিএইচপি চেষ্টা করুন!

$_='$z=0?"$&".next: 0..a||eval("printf=console.log;atob`JCc`");printf("%s_=%s%s%s;eval(%s_);",$d=$z[0]?$z[0]:h^L,$q=$z[1]?$z[1]:h^O,$_,$q,$d);';eval($_);

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