순환 폴리 글 로트 챌린지 (Cops)


11

주기적 폴리 글 로트 챌린지

이것은 경찰 실입니다. 여기서 강도 실을 찾을 수 있습니다 .

주기적 폴리 글 로트

N- 요소 순환 폴리 글롯은 N 개의 다른 언어로 실행할 수있는 완전한 프로그램입니다. 각 언어에서 프로그램이 입력없이 실행되면 ( 이 예외가 적용될 수 있음 ) 언어 이름을 STDOUT에 인쇄해야합니다. 특히, 프로그램이 K 번째 언어로 실행되는 경우, (K + 1) 번째 언어의 이름을 인쇄해야합니다. 프로그램이 N 번째 언어 (즉, N 요소주기의 최종 언어)로 실행되는 경우 첫 번째 언어의 이름을 인쇄해야합니다.

예가 유용 할 수 있습니다.

a = [[ v = 7, puts('Befunge') ]]
__END__
= print("Ruby")
-->*+:292*++,,@
--3    9
--7    *
--^,:-5<

Lua와 함께이 프로그램을 실행하면 문자열 "Ruby"가 인쇄됩니다. Ruby에서이 프로그램을 실행하면 "Befunge"라는 문자열이 인쇄됩니다. Befunge에서이 프로그램을 실행하면 문자열 "Lua"가 인쇄되어주기가 완료됩니다. 이 프로그램은 Lua, Ruby 및 Befunge로 구성된 3주기를 구성합니다.

같은 언어는 한 번에 두 번 나타날 수 없으며 같은 언어의 다른 버전 (예 : Python 2 및 Python 3)은 서로 같은 주기로 나타날 수 없습니다.

경찰

문제는 N이 2 이상인 N- 사이 클릭 폴리 글 로트를 작성하는 것입니다. 그런 다음 프로그램에 문자를 몇 개 추가, 교체 및 삭제하여 M- 사이 클릭 폴리 글 로트를 생성해야합니다. 여기서 M은 N보다 엄격합니다. 그런 다음 더 짧은 N- 사이 클릭 폴리 글롯 (및 사용되는 언어)과 더 긴 폴리 글롯을 생성하기 위해 변경 한 문자 수를 게시해야합니다. 점수는 N, 짧은주기의 언어 수입니다.

강도는 더 긴주기를 식별하려고 시도합니다. 7 일이 지난 후에도 아무도 솔루션을 해독하지 못한 경우 안전하다고 선언하는 답변을 편집해야합니다. 또한 더 긴 M- 사이 클릭 폴리 글 로트도 게시해야합니다.

강도

경찰의 N- 사이 클릭 폴리 글 로트와 더 많은 폴리 ​​글 로트 사이클을 생성하기 위해 추가 한 문자 수를 고려하면 목표는 더 큰 사이클을 생성하는 것입니다. 순경 보다 적은 수의 문자 를 추가, 삭제 또는 교체하여 더 긴주기를 생성 할 수 있으면 순경의 폴리 글롯에 균열이 발생한 것입니다. 당신의 점수는 당신이 만든 새로운 사이클의 길이입니다. 새 폴리 글롯은 경찰의 비밀 폴리 글롯과 같거나 비슷할 필요는 없습니다. 기존 것보다 커야합니다.

해결책이 깨졌을 수도 있습니다. 다른 경찰이 와서 같은 경찰의 폴리 글 로트에서 시작하여 당신보다 더 긴주기를 생산한다면, 그들은 당신의 포인트를 훔쳤습니다.

유효한 프로그래밍 언어

이 과제는 간접적으로 다른 참가자가 사용하는 프로그래밍 언어를 추측하는 것과 관련이 있기 때문에이 과제를위한 프로그래밍 언어의 정의는 일반적인 정의보다 조금 더 엄격합니다. 이 과제에 사용 된 프로그래밍 언어는 다음 조건을 모두 만족해야합니다.

최종 노트

  • 작성한 코드는 실행하려는 모든 언어의 독립형 프로그램이어야합니다. 함수 또는 코드 스 니펫은 허용되지 않습니다.
  • 프로그램은 STDIN을 통해 입력되지 않습니다. 마찬가지로, 프로그램은 STDERR에 아무것도 인쇄하지 않아야합니다.
  • 경찰의 점수는 게시 한 폴리 글 로트주기의 언어 수입니다. 경찰은 게시 된 폴리 글 로트가 올바르게 실행되는 언어와 더 긴 폴리 글 로트를 생성하기 위해 추가 한 문자 수를 게시해야합니다. 그들은 대답이 안전해질 때까지 더 길고 숨겨진 폴리 글롯이 실행되는 언어를 게시 할 책임 이 없습니다 .
  • 강도 점수는 수정 된 폴리 글롯이 실행되는 언어의 수입니다. 경찰과 마찬가지로 강도는 폴리 글롯이 올바르게 실행되는 언어 목록을 게시해야합니다.
  • 변경된 문자 수는 레 벤슈 테인 거리에서 계산해야합니다.

3
"언어에는 무료로 통역사 나 컴파일러가 있어야합니다. 죄송합니다. Mathematica 팬이지만 강도는 솔루션을 확인할 수 있어야합니다." Wolfram Open Cloud에 어떤 문제가 있습니까? sandbox.open.wolframcloud.com
Scott Milner

내 컴퓨터에 Mathematica의 로컬 사본이 있으므로 그러한 것을 알지 못했습니다. 댓글이 삭제되었습니다.
Silvio Mayolo

N = 2, M = 3에 괜찮습니까?
mdahmoune

네. 상관 없어요. 당신의 점수는 단순히 2이지만, 그것은 완벽하게 수용 가능합니다.
Silvio Mayolo

답변:


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.