การประกวดครั้งนี้จบแล้ว
เนื่องจากลักษณะของความท้าทายตำรวจและโจรความท้าทายตำรวจกลายเป็นเรื่องง่ายขึ้นมากเมื่อความสนใจในความท้าทายโจรที่เกี่ยวข้องได้ลดลง ดังนั้นในขณะที่คุณยังสามารถโพสต์ฟังก์ชันแฮชคำตอบของคุณจะไม่ได้รับการยอมรับหรือเป็นส่วนหนึ่งของกระดานแต้มนำ
ความท้าทายนี้คือการค้นหาการใช้งานฟังก์ชันแฮชที่สั้นที่สุดที่ทนทานต่อการชนกล่าวคือควรหาข้อความที่แตกต่างกันสองข้อความที่มีแฮชเดียวกัน
ในฐานะตำรวจคุณพยายามคิดค้นและใช้ฟังก์ชันแฮชเพื่อหาการประนีประนอมที่ดีที่สุดระหว่างขนาดรหัสและการต่อต้านการชน ใช้จำนวนไบต์มากเกินไปและตำรวจอีกคนจะเร็วกว่าคุณ!
ในฐานะโจรคุณพยายามสกัดกั้นความพยายามของตำรวจโดยการทำหน้าที่ของพวกเขาให้แตกเพื่อพิสูจน์ว่าพวกเขาไม่เหมาะสม สิ่งนี้จะบังคับให้พวกเขาใช้จำนวนไบต์มากขึ้นเพื่อเสริมอัลกอริทึมของพวกเขา!
ตำรวจท้าทาย
งาน
ใช้การเข้ารหัสลับฟังก์ชันแฮชH: ฉัน -> Oที่คุณเลือกที่ฉันเป็นชุดของทั้งหมดไม่ integers เชิงลบด้านล่าง 2 2 30และOเป็นชุดของทั้งหมดไม่ integers เชิงลบด้านล่าง 2 128
คุณสามารถใช้Hเป็นฟังก์ชันจริงที่ยอมรับและส่งคืนจำนวนเต็มเดียวการแทนค่าสตริงของจำนวนเต็มหรืออาร์เรย์ของจำนวนเต็มหรือโปรแกรมเต็มรูปแบบที่อ่านจาก STDIN และพิมพ์ไปยัง STDOUT ในฐาน 10 หรือ 16
เกณฑ์การให้คะแนน
Hว่ามันต้องต่อต้านความท้าทายโจรที่กำหนดไว้ด้านล่าง
ถ้าโจรเอาชนะส่งของคุณใน 168 ชั่วโมงแรกหลังการโพสต์มันก็ถือว่าแตก
การดำเนินการของHควรสั้นที่สุด การส่งที่ไม่ได้ติดตามที่สั้นที่สุดจะเป็นผู้ชนะของความท้าทายของตำรวจ
กฎเพิ่มเติม
หากคุณใช้งานHเป็นฟังก์ชั่นโปรดใส่กระดาษห่อเพื่อใช้งานฟังก์ชั่นจากภายในโปรแกรมที่ทำงานตามที่อธิบายไว้ข้างต้น
โปรดระบุเวกเตอร์ทดสอบอย่างน้อยสามรายการสำหรับโปรแกรมหรือ wrapper ของคุณ (ตัวอย่างอินพุตและเอาต์พุตที่สอดคล้องกัน)
Hสามารถออกแบบนวนิยายของคุณ (ที่ต้องการ) หรืออัลกอริทึมที่รู้จักกันดีตราบใดที่คุณใช้มันด้วยตัวคุณเอง ห้ามมิให้ใช้ฟังก์ชั่นแฮชในตัว, ฟังก์ชั่นการบีบอัด, ตัวเลข, PRNG และอื่น ๆ
ในตัวที่ใช้ทั่วไปในการใช้ฟังก์ชั่นแฮช (เช่นการแปลงฐาน) เป็นเกมที่ยุติธรรม
ผลลัพธ์ของโปรแกรมหรือฟังก์ชั่นของคุณจะต้องกำหนดไว้ล่วงหน้า
ควรมีคอมไพเลอร์ / ล่ามฟรี (เช่นเบียร์) ที่สามารถเรียกใช้บนแพลตฟอร์ม x86 หรือ x64 หรือจากภายในเว็บเบราว์เซอร์
โปรแกรมหรือฟังก์ชั่นของคุณควรมีประสิทธิภาพพอสมควรและต้องแฮชข้อความใด ๆ ในIด้านล่าง 2 2 19ในเวลาน้อยกว่าหนึ่งวินาที
สำหรับกรณีขอบเวลา (ผนัง) ที่ใช้ในเครื่องของฉัน (Intel Core i7-3770, RAM 16 GiB) จะแตกหัก
เมื่อพิจารณาถึงลักษณะของการท้าทายนี้ห้ามมิให้เปลี่ยนรหัสของคำตอบของคุณในทางใด ๆ ไม่ว่าจะเป็นการเปลี่ยนแปลงผลลัพธ์หรือไม่
หากการส่งของคุณแตก (หรือแม้ว่าจะยังไม่มี) คุณสามารถโพสต์คำตอบเพิ่มเติมได้
หากคำตอบของคุณไม่ถูกต้อง (เช่นคำตอบนั้นไม่เป็นไปตามข้อกำหนด I / O) โปรดลบออก
ตัวอย่าง
Python 2.7, 22 ไบต์
def H(M): return M%17
เสื้อคลุม
print H(int(input()))
ความท้าทายของโจร
งาน
แตกใด ๆ ของตำรวจส่งโดยโพสต์ต่อไปนี้ในที่โจรหัวข้อ : สองข้อความMและNในฉันเช่นว่าH (M) = H (N)และM ≠ N
เกณฑ์การให้คะแนน
การแคร็กการส่งตำรวจแต่ละครั้งทำให้คุณได้หนึ่งจุด โจรที่มีคะแนนมากที่สุดเป็นผู้ชนะ
ในกรณีของการผูกเน็คไทโจรที่ถูกผูกไว้จะทำให้การยอมแพ้ที่ยาวนานที่สุดชนะ
กฎเพิ่มเติม
การส่งตำรวจทุกครั้งสามารถถอดรหัสได้หนึ่งครั้งเท่านั้น
หากการส่งตำรวจขึ้นอยู่กับพฤติกรรมที่กำหนดหรือไม่ได้กำหนดไว้คุณจะต้องพบกับรอยแตกที่ใช้งานได้บนเครื่องของคุณ
การแตกร้าวแต่ละครั้งเป็นของคำตอบที่แยกกันในเธรดของโจร
การโพสต์ความพยายามในการแคร็กที่ไม่ถูกต้องห้ามคุณจากการแคร็กการส่งนั้นเป็นเวลา 30 นาที
คุณไม่สามารถทำการส่งของคุณเองได้
ตัวอย่าง
Python 2.7, 22 ไบต์โดย user8675309
1
และ
18
ลีดเดอร์บอร์ด
ส่งที่ปลอดภัย
ส่งที่ไม่ได้ติดตาม
คุณสามารถใช้ Stack Snippet นี้เพื่อรับรายการคำตอบที่ยังไม่ถอดรหัส
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>