철학자 윌러드 밴 오먼 콰인(Willard Van Orman Quine, 1908–2000)은 자기 참조에서 생길 수 있는 모순을 보여 주기 위해 문장을 만드는 독특한 방법을 고안했습니다. 이 연산은 하나의 문구(phrase)를 입력으로 받아 하나의 문장을 만들어 냅니다. (작가 더글러스 R. 호프스태터는 이 과정을 문구를 "콰인한다(to Quine)"라고 표현했습니다.) 콰인 연산은 다음과 같이 정의합니다.
Quine(A) = "A" A
즉, A가 하나의 문구일 때 Quine(A)는 A를 큰따옴표(")로 감싼 뒤 공백 하나를 붙이고, 다시 A를 이어 붙인 것입니다. 예를 들면 다음과 같습니다.
Quine(HELLO WORLD) = "HELLO WORLD" HELLO WORLD
콰인 연산으로 만들 수 있는 문장의 다른 예는 다음과 같습니다. 콰인 연산을 쓰면 아래 마지막 문장처럼 문장이 간접적으로 자기 자신을 가리킬 수도 있습니다.
"IS A SENTENCE FRAGMENT" IS A SENTENCE FRAGMENT
"IS THE NAME OF THIS PROBLEM" IS THE NAME OF THIS PROBLEM
"YIELDS FALSEHOOD WHEN QUINED" YIELDS FALSEHOOD WHEN QUINED
이 문제에서 여러분이 할 일은 주어진 문장이 콰인 연산의 결과인지 판별하는 것입니다.
입력은 한 줄에 하나씩 주어지는 문장들의 열이며, 마지막 줄에는 단어 END 하나만 주어집니다. 각 문장은 대문자 알파벳, 공백, 큰따옴표(")로만 이루어집니다. 각 문장의 길이는 1자 이상 80자 이하이며, 맨 앞·맨 뒤 공백이나 연속된 공백은 없습니다.
각 문장이 콰인 연산의 결과인지 판별해야 합니다. 콰인이 되려면 문장이 다음 패턴과 정확히 일치해야 합니다.
A라고 합니다)A이 패턴에 일치하면 그 문장은 문구 A의 콰인입니다. 문구 A는 두 번 나타날 때 두 번 모두 문자열이 완전히 동일해야 합니다.
각 문장마다 한 줄씩 출력합니다. 문장이 콰인 연산의 결과이면, 그 문장을 만드는 데 사용된 문구 A를 써서 Quine(A) 형식으로 출력합니다.
문장이 콰인 연산의 결과가 아니면 not a quine을 출력합니다.