이전에 회문 코드를 작성해 본 적이 있다면 얼마나 많은 괄호가 방해가되는지 알 것입니다. ()()
이 수, 동안해야처럼 좀 보인다하더라도, 회문없는 ())(
및 ()(
모두 회문 찾고 모두 매우 바보입니다. 다른 방법이라면 편리하지 않습니까?
문자열에 리버스에 괄호 ( ), 괄호 ( ) 및 괄호 ( ) 가 모두 바뀔 때 파생 된 문자열과 같으면 문자열이 편리합니다 . 다른 캐릭터는 특별하지 않으며 뒤집을 필요가 있습니다. ( 때로는 짝 지어 지지만 종종 빠지지 않습니다.)()
[]
{}
<>
당신의 임무 는 언어로 프로그램 (STDIN에 입력을 받음) 또는 (a) 인수가 편리하게 회 문적이며 다른 일관된 거짓 일 때 일관된 참값을 제공하는 함수 (단일 문자열 인수를 취함)를 작성하는 것입니다. 그렇지 않으면 (b) 그 자체가 편리하게 회문이다.
예를 들어, 다음 입력은 편리하게 회 문형입니다.
racecar
(a)(bb)(a)
void main(int argc, *char[] argv) {} (vgra []rahc* ,cgra tni)niam diov
그리고 다음은 아닙니다 :
non-palindrome
A nut for a jar of tuna?
(old [style] parens) )snerap ]elyts[ dlo(
ingirumimusnocte)etconsumimurigni
인터프리터 / 컴파일러 플래그를 제외한 외부 상태 (특정 파일 이름, 디렉토리 구조, 기타 사용자 입력, 웹 액세스 등)에 의존해서는 안됩니다.
또한 언어의 주석 기능을 활용하여 주석 처리하거나 일부 코드 조각을 사용하지 않는 "댓글 트릭"을 사용할 수 없습니다. 예를 들어, 다음은 모두 안전하게 제거하거나 파괴 할 수있는 비 기능적 부품을 포함하고 있기 때문에 허용되지 않습니다.
{some code} // {edoc emos}
{some code} NB.BN {edoc emos}
"n\" ;{edoc emos} ;"; {some code}; "\n"
분명히 이것은 모든 경우를 다룰 수는 없지만 여기서 도전 과제는 주석 처리 및 구문 분석되지 않은 ** 코드를 사용하여 회담을 달성하는 대신 수정 된 parens 및 괄호를 사용하는 것입니다. 당신을보고 있어요, LISP, Brainfuck.
이것은 code-golf 이므로 가장 짧은 코드가 승리하지만 모든 코드 길이를 환영합니다.
* 일관된 true 및 false 값으로, 이러한 값이 서로 다르고 서로 다르지 않는 한 true 및 false 또는 true 및 false 1
와 같은 값 쌍 중 하나를 반환 할 수 있습니다. 프로그램 실행에서 변경. 당신에게 문자를 저장 무엇이든 사용하십시오.0
False
"no"
** 실행되지 않은 것과 혼동 하지 마십시오. 유효하고 이상한 일을 할 수 있지만 결코 호출되지 않는 코드입니다.
(eslaf)fi
, 당신은 사용할 수 있다고 생각합니다 if(false)
.
()()
회문이 아닌 이유를 알아내는 데 시간이 너무 오래 걸렸습니다
if(false){some code}
하거나 사용하지 않는 변수는 어떻습니까? 그들은 허용됩니까?