프로그램이 palindromic이라는 조건을 추가하여 문자열이 palindromic인지 테스트 할 프로그램을 작성하십시오.
프로그램이 palindromic이라는 조건을 추가하여 문자열이 palindromic인지 테스트 할 프로그램을 작성하십시오.
답변:
z=gets;puts *z.reverse==z&&1||0||1&&z==esrever.z* stup;steg=z
입력이 회 문인 경우 1을, 그렇지 않은 경우 0을 인쇄합니다. 줄 바꿈없이 입력
주석을 사용하지 않고 두 가지 트릭을 사용합니다.
0
루비의 진정한 틱 (아니라 nil
그리고 false
그래서, false로 평가) 1&&z==esrever.z* stup
런타임 예외를 발생시킬 수 없습니다, 따라서 평가되지 않았습니다*
) :의 구문 오류를 피하기 위해 z=esrever.z stup
파서를 강제로 구문 분석하도록 z=esrever.z()*stup
합니다 *
. 반면에는 *
함수 호출에서 배열을 일련의 매개 변수로 분할하는 표시 연산자로 구문 분석됩니다. 배열 대신 요소가 하나만 있으면 기본적으로 아무것도 수행하지 않으므로 puts *foo
에 해당합니다 puts foo
.주석을 사용한 명백한 해결책 (참 / 거짓으로 인쇄) :
puts gets.reverse==$_#_$==esrever.steg stup
주석없는 파이썬
"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
첫 번째 스택을 두 번째 스택에 복사합니다.
z
스택의 상단을 반대로하여 "as"는 "sa"가됩니다.
.
활성 스택을 이동하여 활성 스택에 입력이 있고 비활성 스택에 입력이 반대가됩니다.
=
평등을 확인하고 평등을 반환 0
합니다.
i
패킷의 ToS 반전, 그래서 0
되고 1
, 아무것도 다른 꽤 많이된다 False
.
_
pop 변수가 ;
인쇄 된 다음 temp 변수를 설정 합니다.
@
프로그램을 수동으로 종료하므로 반전 된 부분에 부딪치지 않습니다. 이것은 회문을 만든다.