みなさんどうも、のどかはです
ところでこれを見てください
q='q%s%s%s%s=;$a="q%s%s%s%s=";$b=chr(39);$c=chr(34);$d=chr(92);$_=q(print qq(q=$b$a;\$a=$c$a$c;\$b=chr(39);\$c=chr(34);\$d=chr(92);\$_=q($_);eval;print q#));eval;print q#;print((q[:9]%(chr(61),chr(39),q,chr(39))+q[-59:])+chr(35))';print((q[:9]%(chr(61),chr(39),q,chr(39))+q[-59:])+chr(35))#;$a=';#$a=%c%s%c;printf($a,39,$a,39);';printf($a,39,$a,39);
どう思いますか?
pythonでしょうかperlでしょうか
正解は、どっちもです
このようなどちらの言語でも動くプログラムをポリグロットと呼びます
一応grok3先生に聞いてみましょう

同じこと言ってそうですね
さて、分かったところでこのプログラムを実行してみてください
どんな結果になりましたか
え?プログラムが出力されたって?
そうですこのプログラムはプログラム自身(ソースコード)を出力するプログラムだからです
このようなプログラムをクワインと呼びます
grok3先生にも聞いてみましょう

なんか具体例をだしてくれました
優しいですね
では最後に一番上のプログラムについても聞いてみましょう


この後何度聞いてもpythonだとは理解してくれませんでした
そんな~grok3先生がそういうなら僕も自信がなくなっちゃうよー
一応証拠を置いときます(今後は動くなるのかも)

注意点として何故か最初からperlを連続して動かすと動かないです
しかもsyntax warningが出てくる…これじゃあgrok3先生を納得させれないよー
はい以上です
コメント