Bu yarışma bitti.
Polisler ve soyguncularla mücadelenin doğası gereği , ilgili soyguncularla mücadeleye olan ilgi azaldığında, polisler mücadelesi çok daha kolay hale gelir. Bu nedenle, yine de karma işlevler yayınlayabildiğiniz halde, cevabınız kabul edilmeyecek veya büyük afişin bir parçasını oluşturamayacak.
Bu zorluk kısa uygulanması için bir arayıştır hash fonksiyonu olan çarpışma dirençli , yani, aynı karma ile iki farklı iletileri bulmak için olanaksız olmalıdır.
Bir polis olarak, kod boyutu ile çarpışma direnci arasında en iyi dengeyi bulmak için bir karma işlevi icat etmeye ve uygulamaya çalışın. Çok fazla bayt kullanın ve başka bir polis sizi aşacak!
Bir soyguncusu olarak, polislerin girişimlerini engelleyerek işlevlerini kırıp, uygun olmadıklarını kanıtlamaya çalışıyorsunuz. Bu, algoritmalarını güçlendirmek için daha fazla byte kullanmaya zorlar!
Polisler mücadelesi
Görev
Bir kriptografik hash fonksiyonu uygulamak H: I -> Ç seçtiğiniz ait ben 2 altındaki tüm negatif olmayan tamsayılar kümesidir 2 30 ve O 2 altındaki tüm negatif olmayan tamsayılar kümesidir 128 .
Ya uygulayabilir H kabul eder ve tek bir tamsayı, bir tamsayı dize gösterimini ya da tamsayı dizisi ya da 10 tabanına ya da 16 STDOUT STDIN'den ve baskılar okur tam bir program döndüren bir gerçek fonksiyonu olarak göstermektedir.
puanlama
H aşağıda tanımlanan soyguncularla mücadeleye karşı koymak zorunda .
Bir soyguncu gönderinizi gönderdikten sonraki ilk 168 saat içinde yenerse, kırıldığı kabul edilir .
H'nin uygulanması mümkün olduğu kadar kısa olmalıdır. İzlenmemiş en kısa sürede yapılan başvurular polis yarışmasının galibi olacaktır.
Ek kurallar
H'yi bir işlev olarak uygularsanız , lütfen işlevi yukarıda açıklandığı gibi davranan bir programın içinden yürütmek için bir sarmalayıcı sağlayın.
Lütfen programınız veya paketleyiciniz için en az üç test vektörü sağlayın (örnek girdiler ve bunlara karşılık gelen çıktılar).
H , kendiniz uyguladığınız sürece, yeni tasarımınız (tercih edilen) veya iyi bilinen bir algoritma olabilir. Her türlü yerleşik karma işlevi, sıkıştırma işlevi, şifre, PRNG vb. Kullanmak yasaktır.
Karma işlevlerini (örneğin temel dönüştürme) uygulamak için yaygın olarak kullanılan herhangi bir yerleşik oyun adildir.
Programınızın veya fonksiyonunuzun çıktısı deterministik olmalıdır.
Bir x86 veya x64 platformunda veya bir web tarayıcısından çalıştırılabilen (biradaki gibi) ücretsiz bir derleyici / tercüman bulunmalıdır.
Programınız veya işlevin makul derecede verimli olmalı ve I 2 2 19'ın altındaki herhangi bir iletiyi bir saniyeden daha kısa sürede almalıdır .
Son durumlarda, makinemde (duvarda) geçen süre (Intel Core i7-3770, 16 GiB RAM) belirleyici olacak.
Bu zorluğun niteliği göz önüne alındığında, cevabınızın kodunu çıktısını değiştirip değiştirmemesine herhangi bir şekilde değiştirmeniz yasaktır.
Gönderiminiz kırılmışsa (veya olmasa bile), ek bir cevap gönderebilirsiniz.
Cevabınız geçersizse (örneğin, G / Ç spesifikasyonuna uymuyorsa), lütfen silin.
Örnek
Python 2.7, 22 bayt
def H(M): return M%17
sarıcı
print H(int(input()))
Soyguncular mücadele
Görev
De aşağıdaki yayınlayarak başvuru polisin herhangi çatlak iplik haydutlarin iki mesaj: M ve K olarak bir şekilde , H (M) = H (H) ve M ≠ N .
puanlama
Her polis gönderisini kırmak sana bir puan kazandırır. En çok puan alan hırsız kazanır.
Beraberlik durumunda, en uzun gönderimi kıran bağlı soyguncu kazanır.
Ek kurallar
Her polis başvurusu sadece bir kez kırılabilir.
Bir polis teslimi, uygulama tarafından tanımlanmış veya tanımlanmamış davranışa dayanıyorsa, yalnızca makinenizde (doğrulanabilir şekilde) çalışan bir çatlak bulmanız gerekir.
Her çatlak, soyguncuların ipindeki ayrı bir cevaba aittir.
Geçersiz bir çatlama girişimi göndermek, söz konusu gönderimi 30 dakika boyunca kırmanızı engeller.
Kendi gönderinizi kıramazsınız.
Örnek
Python 2.7, 22 byte kullanıcı8675309 tarafından
1
ve
18
Liderler Sıralaması
Güvenli gönderimler
Uncracked gönderimler
Henüz kesilmemiş cevapların bir listesini almak için bu Yığın Parçacığını kullanabilirsiniz.
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>