Meydan okuma
Basit bir "casus versus casus" mücadelesi.
Aşağıdaki özelliklere sahip bir program yazın:
- Program herhangi bir dilde yazılabilir, ancak 512 karakteri geçmemelidir (bu sitedeki kod bloğunda gösterildiği gibi).
- Program, giriş olarak 5 imzalı 32 bit tam sayı kabul etmelidir. 5 argümanı kabul eden bir işlev, tek bir 5 elemanlı diziyi kabul eden bir işlev veya herhangi bir standart girişten 5 tam sayı okuyan tam bir program biçimini alabilir.
- Program, imzalanmış bir 32 bit tamsayı çıkarmalıdır.
- Program, yalnızca bir dizi olarak yorumlanan beş giriş, programcının seçtiği “anahtar” olarak adlandırılan belirli bir aritmetik sekansla eşleşiyorsa ve 1 değerini döndürmelidir. Diğer tüm girişler için işlev 0 döndürmelidir.
Bir aritmetik dizilim, dizinin ardışık her bir elemanının kendinden önceki artı bir miktar sabit sabite eşit olması özelliğine sahiptir a
.
Örneğin, 25 30 35 40 45
dizinin her elemanı kendinden önceki artı 5'e eşit 17 10 3 -4 -11
olduğu için bir aritmetik dizidir.
Diziler 1 2 4 8 16
ve 3 9 15 6 12
aritmetik diziler değildir.
Bir anahtar, seçtiğiniz, herhangi bir aritmetik dizi olabilir; tek tamsayı taşması içeren dizilere izin verilmez. Kendisine, sekans gerekir katı azalan katı artan olabilir veya tüm elemanlar eşit olması.
Örnek olarak, anahtarı seçtiğinizi varsayalım 98021 93880 89739 85598 81457
. Girişler (sıra ile) bu beş sayı ile eşleşiyorsa, programınız 1 döndürmelidir.
Lütfen anahtarı koruma araçlarının kendi tasarımınız olması gerektiğini unutmayın. Ayrıca, sıfır pozitif olasılığı olan yanlış pozitifleri döndürebilecek olasılıksal çözümlere izin verilmez. Özellikle, standart şifreleme karma değerleri için kütüphane fonksiyonları da dahil olmak üzere herhangi bir standart şifreleme karma kullanmayın.
Puanlama
Her karakter sayısında kırılmayan en kısa gönderim (ler) kazanan ilan edilecektir.
Herhangi bir karışıklık varsa, sormak veya yorum yapmaktan çekinmeyin.
Karşı Mücadelesi
Kendi programlarını sunanlar da dahil olmak üzere tüm okuyucular başvuruları "kırmaya" teşvik edilir. Bir anahtar, ilgili yorumlar bölümünde anahtarının gönderildiği durumda kırılır. Bir başvuru, değiştirilmeden veya çatlatılmadan 72 saat boyunca devam ederse, "güvenli" olarak kabul edilir ve çatlamadaki bir sonraki başarı, yarışma uğruna göz ardı edilir.
Güncellenen çatlama puanı politikasına ilişkin detaylar için aşağıdaki "Feragatname" bölümüne bakın.
Çatlaklar çekişmeler çekişmeden elimine edilir (“güvenli” olmadığı sürece). Düzenlenmemeliler. Bir okuyucu yeni bir program sunmak isterse, bunu ayrı bir cevapta yapmalıdır.
En yüksek puanı alan kraker (ler), kazanan programların geliştiricileri ile birlikte kazananlar olarak ilan edilecektir.
Lütfen kendi gönderinizi kırmayın.
İyi şanslar. :)
Liderler Sıralaması
Son derece puan durumu (Dennis'in CJam 49 teslimi için bekleyen güvenliği).
Güvenli Dolaplar
- CJam 49, Dennis
- CJam 62, Dennis güvenli
- CJam 91, Dennis güvenli
- Python 156, Maarten Baert güvenli
- Perl 256, chilemagic güvenli
- Java 468, Geobits güvenli
Durdurulamaz Krakerler
- Peter Taylor [Ruby 130, Java 342, Mathematica 146 *, Mathematica 72 *, CJam 37]
- Dennis [Pyth 13, Python 86 *, Lua 105 *, GolfScript 116, C 239 *]
- Martin Büttner [Javascript 125, Python 128 *, Ruby 175 *, Ruby 249 *]
- Tyilo [C 459, Javascript 958 *]
- freddieknets [Mathematica 67 *]
- Ilmari Karonen [Python27 182 *]
- azotlu [C 212 *]
* uyumlu olmayan gönderim
Feragatname (23:15 EST güncellendi, 26 Ağu)
Puanlama problemleri nihayet kritik kütleye ulaştığında (şimdiye kadar kırılan başvuruların üçte ikisi verilene kadar uyuşmuyor), üstteki kırıcıları kırılan başvuru sayısı (birincil) ve uyumlu kırılan başvurulardaki toplam karakter sayısı açısından sıraladım (ikincil).
Daha önce olduğu gibi, kesin bildiriler kırıldı, başvuruların uzunluğu ve uygun / uyumlu olmayan durumlarının tümü işaretlendi, böylece yeni resmi sıralamaların haksız olduğuna inanırlarsa okuyucuların kendi sıralamalarını çıkarmaları mümkün olacak.
Oyunun bu saatinde kuralları değiştirdiğim için özür dilerim.