이 콘테스트는 끝났습니다.
경찰과 강도 도전 과제 의 특성으로 인해 관련 강도 도전에 대한 관심이 줄어들면 경찰 도전이 훨씬 쉬워집니다. 따라서 여전히 해시 함수를 게시 할 수 있지만 답변이 수락되지 않거나 리더 보드의 일부를 구성하지는 않습니다.
이 과제는 충돌에 강한 해시 함수 의 최단 구현을 검색 하는 것입니다 . 즉, 동일한 해시로 두 개의 다른 메시지를 찾을 수 없어야합니다.
경찰은 코드 크기와 충돌 내성 간의 최상의 절충안을 찾는 해시 함수를 발명하고 구현하려고합니다. 너무 많은 바이트를 사용하면 다른 경찰이 당신을 능가합니다!
강도로서, 경찰은 자신의 기능을 해독하여 부적합하다는 것을 증명함으로써 경찰의 시도를 망가 뜨리려고합니다. 그러면 알고리즘을 강화하기 위해 더 많은 바이트를 사용하게됩니다!
경찰 도전
태스크
선택한 암호화 해시 함수 H : I-> O 를 구현하십시오. 여기서 I 는 2 2 30 미만 의 모든 음이 아닌 정수 세트 이고 O 는 2 128 미만의 모든 음이 아닌 정수 세트입니다 .
단일 정수, 정수 또는 정수 배열의 문자열 표현 또는 STDIN에서 읽고 기본 10 또는 16에서 STDOUT으로 인쇄하는 전체 프로그램을 받아들이고 리턴하는 실제 함수로 H 를 구현할 수 있습니다 .
채점
H 아래에 정의 된 강도 도전 에 저항 해야 합니다.
강도가 게시 후 처음 168 시간 내에 제출을 물리 치면 금이 간 것으로 간주됩니다 .
H 의 구현은 가능한 한 짧아야합니다. 가장 짧은 무단 제출은 경찰 도전의 승자가 될 것입니다.
추가 규칙
H 를 함수로 구현하는 경우 위에서 설명한대로 동작하는 프로그램 내에서 함수를 실행할 래퍼를 제공하십시오.
프로그램 또는 래퍼 (예 : 입력 및 해당 출력)에 대해 적어도 세 개의 테스트 벡터를 제공하십시오.
H 는 직접 구현하는 한 새로운 디자인 (선호) 또는 잘 알려진 알고리즘 일 수 있습니다. 내장 된 해시 함수, 압축 함수, 암호, PRNG 등을 사용하는 것은 금지되어 있습니다.
해싱 함수 (예 : 기본 변환) 를 구현 하는 데 일반적으로 사용되는 모든 내장 게임은 공정한 게임입니다.
프로그램 또는 함수의 출력은 결정적이어야합니다.
x86 또는 x64 플랫폼에서 또는 웹 브라우저 내에서 실행할 수있는 비어있는 컴파일러 / 인터프리터가 있어야합니다.
귀하의 프로그램 또는 기능은 합리적으로 효율적 이어야하며 1 초 이내에 2 2 19 미만의 I 메시지를 해시해야합니다 .
가장자리의 경우 내 컴퓨터 (Intel Core i7-3770, 16GiB RAM)에서 소요되는 (벽) 시간이 결정적입니다.
이 과제의 특성상 출력 변경 여부에 관계없이 어떤 방식 으로든 답변 코드를 변경하는 것은 금지되어 있습니다.
제출물에 금이 간 경우 (또는 그렇지 않은 경우에도) 추가 답변을 게시 할 수 있습니다.
답변이 유효하지 않은 경우 (예 : I / O 사양을 준수하지 않는 경우) 삭제하십시오.
예
파이썬 2.7, 22 바이트
def H(M): return M%17
싸개
print H(int(input()))
강도 도전
태스크
'는 다음 사항을 게시하여 제출 경찰 어떠한 균열 스레드 강도' 개의 메시지 : M 및 N을 의 I 되도록 H (M) = H (N) 및 M ≠ N .
채점
각 경찰 제출물을 크래킹하면 1 포인트가됩니다. 가장 많은 점수를 얻은 강도가 승리합니다.
동점 인 경우, 가장 긴 제출을 금한 묶인 강도가 승리합니다.
추가 규칙
모든 경찰 제출은 한 번만 해킹 할 수 있습니다.
경찰 제출이 구현 정의 또는 정의되지 않은 동작에 의존하는 경우 시스템에서 (확인 가능) 작동하는 균열 만 찾으면됩니다.
각 균열은 강도 실에서 별도의 답변에 속합니다.
잘못된 크래킹 시도를 게시하면 30 분 동안 해당 특정 크래킹이 크래킹되지 않습니다.
당신은 당신 자신의 제출물을 해독 할 수 없습니다.
예
Python 2.7, 사용자 별 22 바이트
1
과
18
리더 보드
안전한 제출
미결제 제출
이 스택 스 니펫을 사용하여 아직 크랙되지 않은 답변 목록을 얻을 수 있습니다.
function g(p){$.getJSON('//api.stackexchange.com/2.2/questions/51068/answers?page='+p+'&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e',function(s){s.items.map(function(a){var h=$('<div/>').html(a.body).children().first().text();if(!/cracked/i.test(h)&&(typeof a.comments=='undefined'||a.comments.filter(function(b){var c=$('<div/>').html(b.body);return /^cracked/i.test(c.text())||c.find('a').filter(function(){return /cracked/i.test($(this).text())}).length>0}).length==0)){var m=/^\s*((?:[^,(\s]|\s+[^-,(\s])+)\s*(?:[,(]|\s-).*?([0-9]+)/.exec(h);$('<tr/>').append($('<td/>').append($('<a/>').text(m?m[1]:h).attr('href',a.link)),$('<td class="score"/>').text(m?m[2]:'?'),$('<td/>').append($('<a/>').text(a.owner.display_name).attr('href',a.owner.link))).appendTo('#listcontent');}});if(s.length==100)g(p+1);});}g(1);
table th, table td {padding: 5px} th {text-align: left} .score {text-align: right} table a {display:block}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><table><tr><th>Language</th><th class="score">Length</th><th>User</th></tr><tbody id="listcontent"></tbody></table>