文字列が回文的であるかどうかをテストするプログラムを作成し、プログラム自体が回文的であるという条件を追加します。
文字列が回文的であるかどうかをテストするプログラムを作成し、プログラム自体が回文的であるという条件を追加します。
回答:
z=gets;puts *z.reverse==z&&1||0||1&&z==esrever.z* stup;steg=z
入力が回文である場合は1を出力し、そうでない場合は0を出力します。改行なしで入力します。
コメントを使用せず、代わりに2つのトリックを使用します。
0
本当っぽいは、Rubyである(のみnil
とfalse
falseと評価)、それほど1&&z==esrever.z* stup
評価されていないため、実行時例外を上げることができません*
):の構文エラーを回避するためにz=esrever.z stup
、をz=esrever.z()*stup
追加することにより、パーサーにこれを解析させます*
。一方、*
はsplat演算子として解析され、関数呼び出しで配列を一連のパラメーターに分割します。配列の代わりに要素が1つだけの場合、基本的には何も行われないため、puts *foo
と同等puts foo
です。コメントを使用した明らかな解決策(true / falseを出力):
puts gets.reverse==$_#_$==esrever.steg stup
コメントなしのPython
"a\";w=]1-::[w trinp;)(tupni_war=w;";w=raw_input();print w[::-1]==w;"\a"
誰もまだそのトリックを見つけていないことに驚いています。ほとんどの言語で動作するはずです!
print
ステートメントを削除することもでき、引用符で囲まれた指定への入力を許可する場合は、raw_input()
に短縮できますinput()
。最初に余分な「=」がありません。
"a\"#;w==]1-::[w;)(tupni_war=w;";w=raw_input();w[::-1]==w;#"\a"
#include <stdio.h> //
#include <string.h> //
int main() { //
char str[1024]; //
fgets(str, sizeof(str), stdin); //
int i = 0, j = strlen(str) - 2; //
for (; i < j; i++, j--) //
if (str[i] != str[j]) { //
printf("no\n"); //
return 0; //
} //
printf("yes\n"); //
} //
// }
// ;)"n\sey"(ftnirp
// }
// ;0 nruter
// ;)"n\on"(ftnirp
// { )]j[rts =! ]i[rts( fi
// )--j ,++i ;j < i ;( rof
// ;2 - )rts(nelrts = j ,0 = i tni
// ;)nidts ,)rts(foezis ,rts(stegf
// ;]4201[rts rahc
// { )(niam tni
// >h.gnirts< edulcni#
// >h.oidts< edulcni#
実行例:
$ gcc -std=c99 c.c && ./a.out
blahalb
yes
<?php eval/*/*/(';{$i=fgets(STDIN,2e9);};{$a="strrev";}{var_dump("{$i}"=="{$a($i)}");}/*}{*\{;("{(tupni$)a$}"=="{putni$}")ohce}{;"verrts"==a$};{;(9e2,NIDTS)stegf=i$);');/*\*\eval php?>
$
問題を回避するためにいくつかの奇妙なトリックを使用します。技術的には、私が;
最後に忍び込まなければならなかったパリンドロームではありません。
<?php $i = fgets(STDIN,2e9); echo $i == strrev($i);/*\;(i$)verrts == i$ ohce ;(9e2, NIDTS)stegf = $i php?>
これは、PHPの/* */
コメントと、コメントの終わりを必要としないという事実を使用する実用的なものです。
eval
は、する必要がありますlave
。
^Cz.=i_;@;_i=.zC^
勝利がどのように定義されているかは正確にはわかりませんが、バイトカウントを上に上げました。
^
入力を取得し、それを最初のスタックにプッシュします。
C
最初のスタックを2番目にスタックします。
z
スタックの先頭を逆にして、「as」が「sa」になるようにします。
.
アクティブスタックをシフトするため、アクティブスタックには入力があり、非アクティブスタックには入力が反転します。
=
等しいかどうかをチェックし、等しいかどうかを返し0
ます。
i
反転のToSは、そう0
なっ1
て、何か他のものはかなりなりFalse
。
_
一時変数をポップして設定し、;
印刷します。
@
プログラムを手動で終了するため、反転した部分にヒットしません。これにより回文が作成されます。