( 오래된 질문에 대한 이 의견 에서 영감을 얻었습니다 .)
배경
오류 quine (또한 "Kimian quine"로 알려진)는 컴파일 또는 실행할 때 발생하는 프로그램입니다 컴파일러 / 통역 / 런타임 동일한 프로그램 자체에 텍스트, 아무것도이있는 에러 메시지를 출력합니다. 이 도전의 목적을 위해, 우리는 경고를 포함하기 위해 "오류"를 광범위하게 정의하고 있습니다.
직무
이 도전에서 우리는 찾고 있습니다 퀘인이것은 또한 오류 quine입니다. 실행될 때 프로그램은 자체 소스 코드를 정상적으로 인쇄해야합니다 (예 : 오류 / 경고 메시지가 아님). 이것은 적절한 quine 이어야합니다 (즉, 프로그램의 일부는 출력의 다른 부분을 인코딩해야합니다). 또한, 컴파일하고 프로그램이 있어야 실행 또한 프로그램의 소스 코드의 원인 - 그리고 아무것도를 - 오류로 인쇄하거나 구현에 의해 경고 메시지. 즉, 프로그램이 정상적으로 실행되지 않는 언어에서는 컴파일 타임 오류를 사용할 수 없습니다. 즉, 프로그램의 소스 코드는 각 방법을 통해 한 번씩 두 번 인쇄됩니다.
설명
- 대부분의 경우 오류 / 경고 메시지가 무엇이고 그렇지 않은 것이 분명합니다. 우리는 여기서 두 가지를 구별하지 않습니다. 모호한 경우, 구현에 의해 출력되는 텍스트로 오류 / 경고 메시지를 정의하십시오. 1. 명령을 실행하는 것 이외의 결과 (또는 언어에서 가장 가까운 것이 무엇이든); 또는 2. 출력으로 생성 한 명령 입력의 일부가 아닙니다.
- quine의 오류 / 경고 부분은 적절한 quine 일 필요는 없습니다 (대부분의 경우 대부분의 오류 및 경고 메시지에는 상당한 양의 고정 텍스트가 포함되어 있기 때문에 우연히 발생합니다).
- 프로그램이 여러 오류 / 경고를 출력하는 것은 허용되며, 이는 함께 연결될 때 프로그램의 소스를 형성합니다. 소스에 나타나지 않는 오류 / 경고를 출력하는 것은 허용되지 않습니다.
- 많은 문제와 달리 컴파일러에 제공된 스위치와 프로그램 파일 이름은이 문제와 관련이있을 수 있습니다. 다른 방법으로는 도전이 불가능할 수 있으므로, 여기서는 융통성이 있지만 기꺼이 구현을 실행하는 경우 PPCG 규칙에 따라 바이트 벌금이 부과됩니다 (추가 문자 수와 동일). 프로그램을 실행하는 가장 짧은 "일반적인"방법으로 명령 행에 추가해야합니다. 따라서 게시물에서 페널티의 크기를 지정해야합니다. 예를 들어, 사용하는 인터프리터가 파일에서 프로그램을 읽고 파일 이름에 특별한 제한이없는 경우 프로그램을 실행하는 가장 일반적인 방법은 파일 이름이 1자인 파일에서 시작하는 것입니다.
- 사용하는 컴파일러 / 인터프리터 버전은 관련이있을 수 있으므로 제출할 때 프로그램이 작동하는 특정 컴파일러 또는 인터프리터 및 필요한 버전을 명시하십시오. 예를 들어 C 제출은 헤더에 "C (gcc 6.2.0)"라고 표시 될 수 있습니다.
- 이 작업이 모든 언어로 가능한 것은 아닙니다. 언어가 가장 쉬운 언어에서 가장 쉬운 방법은 오류 메시지 나 경고 메시지를 찾는 것입니다. 오류 메시지 나 경고 메시지는 텍스트의 일부를 사용자 정의 할 수 있습니다 (메시지에 인용되는 이름을 변경하여 파일 이름을 선택하는 것이 일반적 임) 여기에 있지만 유일한 것은 아닙니다). 누군가 텍스트가 수정 된 오류 및 경고 메시지 만 사용 하여이 작업을 수행 할 수있는 방법을 찾으면 특히 감동받을 것 입니다.
승리 조건
이것은 코드 골프도전 과제이므로 바이트 수가 더 적은 항목이 더 나은 것으로 간주됩니다. 따라서 프로그램이 작동하게되면 가능한 한 바이트 수를 줄 이도록 프로그램을 최적화하려고합니다. (단, 이미 다른 언어로 된 항목이 이미 짧은 경우에는 실망하지 마십시오. 우리가 실제로 찾고있는 것은 가능한 한 특정 프로그램이나 알고리즘을 최대한 단축하는 것이지만 여러 항목을 보는 것입니다 다른 언어로 된 솔루션이나 다른 원칙에 의존하는 솔루션은 항상 가치가 있습니다.)