Bu kod mücadelesinde 140 bayt 1 veya daha az kaynak kodunda bir karma işlevi yazacaksınız . Karma işlevi giriş olarak bir ASCII stringi almalı ve çıkış olarak 24 bit işaretsiz tamsayı ([0, 2 24 -1]) döndürmelidir .
Bu büyük İngiliz İngilizcesi 2 sözlükteki her kelime için karma işleviniz değerlendirilecektir . Puanınız, karma değeri başka bir kelimeyle (çarpışma) paylaşan kelimelerin miktarıdır.
En düşük puan kazanır, ilk poster tarafından kırılan bağlar.
Test durumu
Göndermeden önce, lütfen puanlama komut dosyanızı aşağıdaki girişte test edin:
duplicate
duplicate
duplicate
duplicate
4'ten başka bir puan verirse, buggy olur.
Açıklama kuralları:
- Karma işleviniz, bir dizinin tamamı değil tek bir dizgede çalışmalıdır. Ayrıca, karma işleviniz giriş dizgisi ve çıktı tamsayısından başka bir G / Ç yapamayabilir.
- Yerleşik karma işlevleri veya benzer işlevler (örneğin, karıştırılan baytlara şifreleme) izin verilmez.
- Karma işleviniz deterministic olmalıdır.
- Diğer yarışmaların aksine, puanlama girdisi için özellikle optimizasyona izin verilir.
1 Twitter'ın bayt yerine karakterleri sınırladığını biliyorum, ancak basitlik için bu bayt için sınırlama olarak baytları kullanacağız.
2 Debian's wbritish-huge'den ASCII olmayan kelimeleri kaldırarak değiştirildi.
D=340275Kelimeler ve R=2^24karma çıktılarda rastgele bir karma D^2/(2*R) = 3450, bazıları çakışan beklenen bir çarpışma çiftine sahiptir . Beklenen bir D^3/(6*R^2) = 23çarpışan üçlü ve önemsiz sayıda daha büyük çarpışma vardır, bu üçlülerin muhtemelen birbirinden ayrı olduğu anlamına gelir. Bu, üçlü, geri kalanını çiftler halinde 6829, karma değeri paylaşan beklenen bir sözcük verir 70. Standart sapma olarak tahmin edilir 118, bu nedenle <6200rastgele bir karma ile elde kabaca 5 sigma olayıdır.

Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch's? Ne ...?