배경
대부분의 PPCG 단골 알 수로서, quine을 실행하면 자신의 소스 코드를 출력하는 프로그램입니다; 두 문자열 사이 의 Levenshtein 거리는 한 문자열을 다른 문자열로 변경하는 데 필요한 삽입, 삭제 및 편집의 최소 수입니다. 이 과제에서 우리는 두 가지 개념을 "레 벤퀸 (levenquine)"으로 결합하고 있습니다. 자체 소스 코드를 출력하지만 한 문자의 인스턴스 하나만 삽입, 삭제 또는 다른 문자로 대체하는 프로그램입니다. 즉, 프로그램과 출력 사이의 Levenshtein 거리는 1입니다.
작업
레 벤퀸을 출력하여 레 벤퀸, 해당 프로그램의 출력도 레 벤퀸 등으로 작성하십시오. 또한 어느 시점에서 프로그램을 반복적으로 실행하고 출력을 실행하고 출력 출력을 실행하는 순서는 결국 원래 프로그램으로 돌아와야합니다.
일을 훨씬 더 어렵게 만드는 한 가지 추가 제한 사항이 있습니다.이주기 내에 공통적 인 문자가없는 두 개의 개별 프로그램이 있어야합니다 (즉, 한 프로그램 내에 존재하고 다른 프로그램 내에 존재하는 문자가 없습니다). 따라서 프로그램은 점차적으로 다른 문자 세트로 다시 전환해야합니다.
출력을 생성하는 모든 프로그램에 필연적으로 상용구가 필요한 프로그래밍 언어를 사용하는 경우 (예 : print
명령문 을 작성하는 한 가지 방법 만 있고 다른 유용한 출력 형식은 없음) 해당 상용구를 목적에 따라 존재하지 않는 것으로 취급 할 수 있습니다 두 프로그램의 공통 문자를 결정합니다. 그러나 코드의 Levenquine 속성을 결정하기 위해 상용구를 계산해야합니다.
설명
- 사이클의 각 "프로그램"은 전체 프로그램 또는 기능 일 수 있습니다. 그것들이 모두 같을 필요는 없습니다. 예를 들어 일부는 전체 프로그램 일 수도 있고 일부는 기능 일 수도 있습니다.
- 사이클의 모든 프로그램이 동일한 형식의 출력을 사용할 필요는 없습니다. 예를 들어, 일부는 표준 출력을 통해 출력하고 일부는 표준 오류를 통해 출력 할 수 있습니다.
- 프로그램은 입력없이 실행됩니다 (또는 가장 간단한 입력을 수행하기 위해 입력이 필요한 언어로).
- 적절한 퀴니 규칙이 적용됩니다. Levenquine은 진정한 quine이 아니지만, 올바른 quine을 작성할 때 불법적 인 일은 할 수 없습니다. 특히, 널 (null) 프로그램은 적절한 레 벤퀸 (Levenquine)의 출력이 유효하지 않으므로 사이클의 일부가 될 수 없습니다.
- Levenquine 제한은 바이트가 아닌 문자로 측정됩니다 (예 :
ê
소스가 UTF-8로 인코딩 된 경우에도 한 문자 임). 비 공통 문자 제한도 문자로 측정됩니다. 그러나 승리 조건은 바이트 단위로 계산됩니다.
승리 조건
주기에서 최소한 다음 세 가지 프로그램을 제출하십시오. 가장 짧은 프로그램 (바이트 단위); 그리고 공통의 문자가없는 사이클의 두 프로그램. 이 중 두 개가 동일 할 수 있으며 세 개 모두가 다를 수도 있습니다. 점수는 가장 짧은 프로그램의 길이 (바이트)를 기준으로하며 짧을수록 좋습니다. 따라서 코드 골프 경쟁이됩니다.