도전
나는 너에게 또 다른 스파이 대 스파이 도전 구덩이 난 독자 대 크래커를 선물한다. 그러나이 경우 보호 할 데이텀은 입력이 아니라 출력 입니다.
도전의 규칙은 간단합니다. 다음 스펙으로 루틴을 작성하십시오.
- 루틴은 모든 언어로 작성 될 수 있지만 320 바이트를 초과 할 수 없습니다.
- 루틴은 세 개의 32 비트 부호있는 정수를 입력으로 허용해야합니다. 3 개의 인수를 허용하는 함수, 단일 3 요소 배열을 허용하는 함수 또는 표준 입력에서 3 개의 정수를 읽는 완전한 프로그램의 형태를 취할 수 있습니다.
- 루틴은 부호있는 32 비트 정수를 출력해야합니다.
- 가능한 모든 입력에서 루틴은 2-1000 (포함)의 고유 한 값 사이에서 출력해야합니다. 루틴이 출력 할 수있는 고유 한 값의 수를 키 라고합니다 .
예를 들어, C 프로그램
int foo( int i1, int i2, int i3 ) {
return 20 + (i1^i2^i3) %5;
}
9의 키를 가지고 있기 때문에 (희망) 그 수에만 출력 아홉 개 값 16
, 17
, 18
, 19
, 20
, 21
, 22
, 23
, 및 24
.
몇 가지 추가 제한 사항은 다음과 같습니다.
- 루틴은 완전히 결정적이고 시간이 변하지 않아야하며 동일한 입력에 대해 동일한 출력을 반환해야합니다. 루틴은 의사 난수 생성기를 호출하지 않아야합니다.
- 이 루틴은 파일의 데이터, 시스템 변수 또는 난해한 언어 기능과 같은 "숨겨진 변수"에 의존하지 않을 수 있습니다. 예를 들어, 루틴 자체는 상수가 코드 자체에 명확하게 정의되어 있지 않으면 상수를 참조해서는 안됩니다. 컴파일러 쿼크, 수학적으로 정의되지 않은 연산의 출력, 산술 오류 등을 사용하는 루틴도 권장하지 않습니다. 의심스러운 경우 문의하십시오.
- 사용자 (코더)는 루틴이 생성 할 수있는 고유 한 출력 수를 정확하게 알고 있어야하며 각 출력을 생성하는 하나 이상의 입력 시퀀스를 제공 할 수 있어야합니다. (수백 개의 고유 한 출력이있을 수 있으므로이 세트는 키가 경쟁하는 경우에만 요청됩니다.)
이 문제는 이전 암호화보다 기존 암호화와 훨씬 유사하지 않기 때문에 더 많은 사용자가 액세스 할 수있을 것으로 기대합니다.
창의성이 높을수록 좋습니다.
득점
바이트 수당 가장 짧은 비 균열 제출물이 승자로 선언됩니다.
혼동이 있으시면 언제든지 문의하거나 의견을 보내주십시오.
카운터 챌린지
자신의 루틴을 제출 한 독자를 포함한 모든 독자는 제출물을 "크랙"할 것을 권장합니다. 키가 관련 댓글 섹션에 게시되면 제출 내용이 해독됩니다. 제출물이 수정되거나 깨지지 않은 상태로 72 시간 동안 지속되는 경우 "안전한"것으로 간주되며 이후의 크래킹 성공은 컨테스트를 위해 무시됩니다.
리더 당 제출 당 하나의 크래킹 시도 만 허용됩니다. 예를 들어, 사용자 X에게 "귀하의 키는 20입니다"라는 메시지를 제출했는데 틀린 경우 사용자 X는 내 추측을 틀린 것으로 간주하지 않으며 더 이상 해당 제출에 대한 추가 추측을 제출할 수 없습니다.
금이 간 제출은 경합에서 제거됩니다 ( "안전하지 않은"경우). 편집해서는 안됩니다. 독자가 새로운 루틴을 제출하려면 별도의 답변으로 제출해야합니다.
크래커의 점수는 자신이 크랙 한 제출 수 (준수 여부에 관계없이)입니다. 카운트가 동일한 크래커의 경우 순위는 모든 크래킹 된 제출에 대한 총 바이트 수로 결정됩니다 (높을수록 좋습니다).
가장 높은 점수를받은 크래커는 우승 루틴 개발자와 함께 승자로 선언됩니다.
직접 제출하지 마십시오.
행운을 빌어 요. :)
리더 보드
마지막 업데이트 9 월 2 일 오전 10:45 EST
움직일 수없는 장벽 (금이없는 제출) :
- CJam, 105 [데니스]
막을 수없는 힘 (크래커) :
- 데니스 [ 자바, 269 ; C, 58 ; 매스 매 티카, 29 ]
- 마틴 부트 너 [ Java, 245 ]
return
등 ...