Tantangan
Tantangan "mata-mata versus mata-mata" yang sederhana.
Tulis program dengan spesifikasi berikut:
- Program dapat ditulis dalam bahasa apa pun tetapi tidak boleh melebihi 512 karakter (seperti yang diwakili dalam blok kode di situs ini).
- Program harus menerima 5 bilangan bulat 32-bit yang ditandatangani sebagai input. Ini dapat mengambil bentuk fungsi yang menerima 5 argumen, fungsi yang menerima array 5-elemen tunggal, atau program lengkap yang membaca 5 bilangan bulat dari input standar apa pun.
- Program harus mengeluarkan satu bilangan bulat 32-bit yang sudah ditandatangani.
- Program harus mengembalikan 1 jika dan hanya jika lima input, ditafsirkan sebagai urutan, cocok dengan urutan aritmatika tertentu dari pilihan programmer, yang disebut "kunci". Fungsi harus mengembalikan 0 untuk semua input lainnya.
Urutan aritmatika memiliki sifat bahwa setiap elemen berurutan sama dengan pendahulunya ditambah beberapa konstanta tetap a
.
Sebagai contoh, 25 30 35 40 45
adalah urutan aritmatika karena setiap elemen urutan sama dengan pendahulunya ditambah 5. Demikian juga, 17 10 3 -4 -11
adalah urutan aritmatika karena setiap elemen sama dengan pendahulunya ditambah -7.
Urutan 1 2 4 8 16
dan 3 9 15 6 12
bukan urutan aritmatika.
Kunci dapat berupa urutan aritmatika yang Anda pilih, dengan batasan tunggal bahwa urutan yang melibatkan bilangan bulat bilangan bulat tidak diizinkan. Artinya, urutannya harus benar-benar meningkat, sangat menurun, atau memiliki semua elemen yang sama.
Sebagai contoh, misalkan Anda memilih kuncinya 98021 93880 89739 85598 81457
. Program Anda harus mengembalikan 1 jika input (sesuai urutan) cocok dengan lima angka ini, dan 0 sebaliknya.
Harap dicatat bahwa cara melindungi kunci harus dari desain novel Anda sendiri. Juga, solusi probabilistik yang dapat mengembalikan false positive dengan probabilitas bukan nol tidak diizinkan. Khususnya, jangan gunakan hash kriptografi standar, termasuk fungsi pustaka untuk hash kriptografi standar.
Skor
Pengajuan non-retak terpendek per jumlah karakter akan dinyatakan sebagai pemenang.
Jika ada kebingungan, jangan ragu untuk bertanya atau berkomentar.
Counter-Challenge
Semua pembaca, termasuk mereka yang telah mengirimkan program mereka sendiri, didorong untuk "memecahkan" kiriman. Kiriman retak ketika kuncinya diposting di bagian komentar terkait. Jika kiriman bertahan selama 72 jam tanpa diubah atau di-crack, itu dianggap "aman" dan setiap keberhasilan selanjutnya dalam cracking itu akan diabaikan demi kontes.
Lihat "Penafian" di bawah ini untuk perincian tentang kebijakan skor retak yang diperbarui.
Pengajuan yang retak dihilangkan dari pertikaian (asalkan tidak "aman"). Tidak boleh diedit. Jika pembaca ingin mengirimkan program baru, ia harus melakukannya dalam jawaban yang terpisah.
Para cracker dengan skor tertinggi akan dinyatakan sebagai pemenang bersama dengan pengembang dari program yang menang.
Harap jangan merusak kiriman Anda sendiri.
Semoga berhasil. :)
Papan peringkat
Klasemen Penultimate (keamanan tertunda dari pengajuan Dennis 'CJam 49).
Loker Aman
- CJam 49, Dennis
- CJam 62, Dennis aman
- CJam 91, Dennis aman
- Python 156, Maarten Baert aman
- Perl 256, aman chilemagic
- Java 468, Geobits aman
Kerupuk yang tak terhentikan
- 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 *]
- nitrous [C 212 *]
* pengiriman yang tidak sesuai
Penafian (Diperbarui 11:15 PM EST, 26 Agustus)
Dengan masalah skor yang akhirnya mencapai massa kritis (mengingat dua pertiga dari kiriman yang retak sejauh ini tidak memenuhi persyaratan), saya telah memberi peringkat kerupuk teratas dalam hal jumlah kiriman yang retak (primer) dan jumlah total karakter dalam kiriman retak yang sesuai (sekunder).
Seperti sebelumnya, pengiriman persis retak, panjang pengiriman, dan status patuh / tidak patuh mereka semua ditandai sehingga pembaca dapat menyimpulkan peringkat mereka sendiri jika mereka percaya peringkat resmi baru itu tidak adil.
Maafkan saya karena mengubah aturan di akhir permainan.