작은 표본의 라듐, 감전 된 고래 및 3 개의 구미 곰과 관련된 매우 이상한 사고로 일부 Management ™의 소스 코드가 변경되었습니다. The Management ™의 사장은 Management ™의 "악한"계획을 막기 위해 실제로 책임을지는 경찰이었던 사람은 거의 모른다. Robbers®는 때로 악을 좋아하지 않기 때문에 원래 코드를 검색하기 위해 고용되었습니다.
참고 :이 과제는 Unscramble the Source Code 에서 큰 영향을 받았습니다 .
기술
이것은 경찰과 강도 도전입니다.
- 경찰 수행 작업 # 1 (또한 작업을 수행 # 2하지만 비밀을 유지하도록하는 프로그램을 작성)하는 프로그램 (돌연변이 코드)를 작성한다.
- 강도는 은 "돌연변이"반전을 시도하고 코드가 수행하는 작업 # 2에이 원래의 코드를 변경합니다.
이 도전에서 과제 # 1은 소수 를 출력하는n
것이고 과제 # 2는 피보나치 숫자 를 출력하는n
것입니다 (어쨌든 경찰에 따르면 악의적입니다). 피보나치 수열은 ( n=1
→ 1
; n=2
→ 1
; n=3
→ 2
; ...)로 정의되고 소수는 ( n=1
→ 2
; n=2
→ 3
; n=3
→ 5
; ...) 로 정의됩니다 .
경찰의 목표는 작업 # 1과 작업 # 2를 완료하는 프로그램 간의 차이를 최소화하면서 강도가 작업 # 2를 완료하는 코드를 다시 생성하지 못하게하는 것입니다.
경찰 규칙
경찰은 두 개의 프로그램 (하나는 작업 # 1을 완료하고 다른 하나는 작업 # 2를 완료)을 작성하고 다음 정보를 공개합니다.
- 첫 번째 프로그램 (
n
10 번째 소수 출력 ) - 첫 번째 프로그램과 두 번째 프로그램 사이 의 Levenshtein 편집 거리
- 프로그래밍 언어 두 프로그램이 작성되는은 (두 프로그램 모두에 대해 동일한 언어이어야 함)
다음 제한 사항은 두 프로그램 모두에 적용됩니다.
- 길이는 128 자 이하 여야합니다.
- 인쇄 가능한 ASCII (및 개행 문자도 허용) 만 사용해야합니다.
- 실행하는 데 10 초도 걸리지
n=45
않으며 올바른 출력을 생성 할 필요가 없습니다n>45
. - 해시 또는 암호화 기능을 사용해서는 안됩니다.
강도 규칙
강도는 경찰의 프로그램 (작업 # 1을 완료 함)을 경찰이 지정한 편집 거리에서 작업 # 2 (경찰이 작성한 원래 프로그램 일 필요는 없음)를 완료하는 프로그램으로 변경하려고 시도합니다.
이미 금이 간 제출은 다시 금이 갈 수 없습니다 (제출을 한 첫 번째 강도 만 크레딧을 얻습니다).
제출물을 크랙 한 후 다음을 수행하십시오.
- 이 과제와 함께 제공되는 질문 (link)에 대한 답변 을 게시 하여 언어, 솔루션 및 원래 답변에 대한 링크를 제공하십시오.
- 게시 한 답변으로 연결되는 "깨끗한"텍스트 로 의견 을 남겨 주십시오.
- 편집 권한이있는 경우 경찰의 답변을 편집하십시오 (없는 경우 필요한 권한을 가진 다른 사람이 그렇게 할 때까지 기다리거나 편집을 제안하십시오).
채점
경찰의 프로그램이 1 주일 동안 크랙되지 않은 상태로 남아 있으면 경찰은 작업 # 2를 완료 한 원본 코드를 게시 할 수 있으며 (지정된 편집 거리 내에서) 제출은 "안전"으로 간주됩니다. 가장 작은 편집 거리를 가진 안전한 제출이 이길 것입니다. 동점 일 경우 가장 짧은 프로그램 (작업 # 1을 완료 한 원본)이 승리합니다. 두 개의 제출물이 여전히 묶여 있으면 이전에 게시 된 것이 우선입니다.
강도가 경찰의 제출을 크랙하면 강도는 해당 제출의 편집 거리만큼 올라갑니다. 예를 들어, 편집 거리가 3이고 거리가 5 인 제출을 크래킹하는 강도는 8 포인트를 얻습니다. 가장 높은 점수를받은 강도가 승리합니다. 동점 일 경우, 먼저 점수를 얻은 강도가 승리합니다.