Dalam tantangan polisi dan perampok ini, polisi akan berpikir tentang bilangan bulat positif. Mereka kemudian akan menulis program atau fungsi yang menghasilkan satu nilai ketika memberikan angka sebagai input dan nilai lainnya untuk semua input bilangan bulat positif lainnya. Polisi kemudian akan mengungkapkan program itu dalam sebuah jawaban yang merahasiakan nomor itu. Perampok dapat memecahkan jawaban dengan menemukan nomornya.
Inilah intinya: ini bukan kode-golf , alih-alih skor Anda akan menjadi nomor rahasia dengan skor yang lebih rendah lebih baik. Jelas Anda tidak dapat mengungkapkan skor Anda sementara perampok masih berusaha menemukannya. Jawaban yang belum di-crack satu minggu setelah postingannya mungkin skornya terungkap dan ditandai aman. Jawaban aman tidak dapat dipecahkan.
Mungkin tidak perlu dikatakan tetapi Anda harus bisa mencetak jawaban Anda. Itu adalah Anda harus tahu persis nilai apa yang diterima oleh mesin keputusan Anda. Hanya mengetahui bahwa ada satu saja tidak cukup.
Penggunaan fungsi kriptografi
Tidak seperti kebanyakan tantangan polisi dan perampok yang meminta Anda untuk tidak menggunakan fungsi kriptografi, tantangan ini tidak hanya sepenuhnya memungkinkan mereka tetapi mendorong mereka. Anda bebas membuat jawaban dengan cara apa pun selama Anda berusaha untuk menang. Yang sedang berkata, jawaban menggunakan metode lain juga diterima di sini. Tujuan dari tantangan ini adalah untuk menang, dan selama Anda tidak menipu, tidak ada yang salah.
sumber
A(9,9)
manaA
fungsi Ackerman.Jawaban:
Tampio , Retak
Jalankan dengan:
Instruksi untuk menginstal juru bahasa termasuk dalam halaman Github. Tolong beri tahu jika Anda mengalami kesulitan menjalankan ini.
sumber
Perl 6 - Retak!
Dalam arti yang ketat, ini bukan pengiriman yang dapat diterima karena tidak berusaha sangat keras untuk menang. Sebaliknya, ia berharap untuk menawarkan teka-teki yang menyenangkan.
Ini adalah program "matematika murni" yang dimaksudkan untuk dipecahkan oleh perenungan. Saya yakin Anda bisa memaksakan solusi (setelah membersihkan beberapa program yang ceroboh yang saya lakukan dengan sengaja), tetapi untuk "kredit penuh" (: -)), Anda harus dapat menjelaskan apa yang dilakukannya dengan alasan matematika .
Anda seharusnya memecahkan fungsi f (). (Itulah fungsi yang mengambil satu bilangan asli dan mengembalikan salah satu dari dua hasil.) Peringatan: Seperti yang ditunjukkan oleh @Nitrodon, program sebenarnya berperilaku salah dan "menerima" jumlah input yang tak terbatas . Karena saya tidak tahu bagaimana cara memperbaikinya, saya hanya berkomentar untuk pemecah masa depan bahwa jumlah yang saya pikirkan adalah kurang dari 70000 .
Jika Anda mencoba menjalankan ini di TIO, waktu akan habis. Ini disengaja. (Karena itu tidak seharusnya dijalankan sama sekali!)
Akhirnya, saya mencoba menulis beberapa kode yang cukup jelas. Sebagian besar Anda harus dapat membacanya dengan lancar bahkan jika Anda tidak terbiasa dengan bahasanya. Hanya dua komentar: tanda kurung siku [ op ] berarti mengurangi ("melipat", dalam bahasa Haskell) daftar dengan op operator ; dan sub yang dipanggil
postfix:<!>
sebenarnya mendefinisikan operator postfix bernama! (Yaitu digunakan seperti5!
- itu tidak persis apa yang Anda harapkan). Demikian pula untuk yangprefix:<∫>
satu.Saya harap seseorang menikmati yang ini, tetapi saya tidak yakin apakah saya berhasil dengan benar. Jangan ragu untuk menampar saya di komentar :—).
Cobalah online!
sumber
JavaScript, Retak
Saya telah mengaburkan ini sebanyak yang saya bisa, ke titik di mana itu tidak sesuai dengan jawaban ini.
Coba di sini! Klik Jalankan, lalu ketik konsol
guess(n)
Pengembalian tidak terdefinisi jika Anda mendapatkan jawaban yang salah, mengembalikan true sebaliknya.
Sunting: Entah bagaimana saya mengabaikan bagian tentang skor saya menjadi nomor. Oh well, nomor saya sangat besar. Semoga berhasil menyelesaikannya.
sumber
Jelly , skor: ... 1 ( retak )
Cobalah online!
1 Benar-benar mengharapkan saya untuk mengungkapkannya? Ayolah! Oh well, itu memiliki skor 134. Di sana, saya mengatakannya!
sumber
Ç€G
dan kisaran1...1000
sebagai input: P5ȷ2_
bagian itu, kan?1
, maka saya telah menempelkan string dari awal hingga1
dalam skrip Python dan menghitung jumlah nol sebelum itu ...Python 2 (retak)
Saya tidak akan menyarankan kekerasan. Semoga Anda menyukai generator!
Cobalah online!
Output
1
untuk nomor yang benar,0
jika tidak.sumber
a
seharusnyai+a
. Saya sudah memperbaikinya, tapi tetap saja retak mengangkat bahuHaskell , retak
Ini murni berdasarkan aritmatika. Perhatikan bahwa itu
myfun
adalah fungsi sebenarnya, sementarah
itu hanyalah fungsi pembantu.Cobalah online!
sumber
Jawa, Retak oleh Nitrodon
Saya ingin mencoba sesuatu yang berbeda dari fungsi hash dan acak yang biasa. Anda bisa meneruskan nomor sebagai argumen baris perintah. Keluaran
1
jika nomor yang benar diberikan dan0
sebaliknya. Untuk jumlah kecil Anda juga dapat mencobanya secara online .Petunjuk:
Penjelasan:
sumber
Pyth, Cracked oleh Erik the Outgolfer *
Saya mencoba mengaburkan ini sebanyak mungkin.
Coba di sini!
sumber
Oktaf, skor: ???
Ini cukup banyak dijamin bahwa tidak ada nomor lain akan memiliki 20 angka acak yang sama persis di akhir daftar
1e8
angka.Keluaran
1
untuk nomor rahasia,0
jika tidak.Saya menjalankan ini di Octave 4.2.0.
"Tidur dan pelambatan lainnya bisa dihilangkan saat memaksa."
Semoga beruntung dengan itu :)
sumber
Ly , skor 239, retak
Cobalah online!
Saya mengandalkan siapa pun yang mengenal Ly di sini, meskipun saya tahu betapa mudahnya itu bisa berubah ... berkeringat
Penjelasan:
sumber
Brain-Flak , skor 1574 ( retak )
Cobalah online!
sumber
dc
Cobalah online!
Catatan: Kiriman ini telah dimodifikasi sejak diajukan. Pengajuan asli (di bawah) tidak valid dan dipecahkan oleh Sleafar dalam komentar di bawah. (Suatu input
1
menimbulkan outputyes
, tetapi ada satu nomor lain yang memberikan hasil yang sama.)Cobalah online!
sumber
Ruby , aman, skor:
Cobalah online!
Penjelasan:
sumber
PHP, aman, skor:
Output 1 jika benar, 0 sebaliknya.
Sunting: Saya tidak berpikir ada orang yang mencoba memecahkan ini karena:
Penjelasan:
sumber
Swift 3 (53 bytes) - Retak
Bagaimana cara menjalankannya? -
f(n:1)
.Tes di Sini.
sumber
Python 3, skor: ???
Semoga ini, jika ada, menunjukkan betapa rusaknya masalah ini sebenarnya:
Pada dasarnya, apa yang dilakukan kode ini adalah menghasilkan setiap string dengan malas sampai salah satu string memiliki hash yang sama persis
hash_code
atas. Kode yang tidak rusak mengambil bentuk dasar:Kecuali
<insert number here>
diganti dengan angka dan ada komentar dalam kode untuk tujuan membuat kode hampir tidak dapat dilewati.Saya telah mengambil setiap tindakan pencegahan untuk memastikan bahwa saya tidak mendapat manfaat dari posting ini. Sebagai permulaan, ini adalah wiki komunitas jadi saya tidak akan mendapatkan perwakilan untuk itu. Juga, skor saya agak besar, jadi semoga jawaban yang jauh lebih kreatif akan datang dan menang.
Semoga kalian semua tidak terlalu marah pada tanggapan saya, saya hanya ingin memamerkan mengapa pos polisi dan perampok biasanya melarang algoritma hashing.
sumber
256 ^ 100
atau2 ^ 800
string. Sementara itu, hanya ada2 ^ 512
hash 512-bit yang mungkin. Itu berarti bahwa string yang Anda ulangi melebihi jumlah hash yang mungkin setidaknya2 ^ 288
satu - jumlah 10.000 kali lebih besar dari jumlah atom di alam semesta. Probabilitas hash tertentu yang tidak digunakan sangat kecil .Python 3 , 49 byte, Retak oleh sonar235
Cobalah online!
sumber
Java, skor: 3141592 ( Cracked )
sumber
Python 3, skor 1 (aman)
Bukan solusi yang sangat menarik, tetapi lebih baik polisi yang aman daripada polisi yang mati.
Output
1
untuk nomor target,0
jika tidak. Input diambil dari stdin. Bagian terakhir (and int(original.decode())<1000
) ada hanya untuk memastikan hanya satu jawaban, kalau tidak pasti akan ada banyak sekali jawaban.sumber
100000000
.C (gcc) , skor ???
Karena solusi kriptografi dianjurkan, di sini. Tepat satu bilangan bulat positif akan mencetak sesuatu , semua yang lain tidak akan mencetak apa pun. Ini membutuhkan waktu lama , sehingga tidak dapat diuji secara online.
sumber
Java, 164517378918, aman
sumber
TI-BASIC,
skor: 196164532tidak bersaingMengembalikan 1 untuk nomor rahasia, 0 sebaliknya.
Lihat catatan di halaman ini pada
rand
perintah untuk info lebih lanjut.sumber
Python 3 , skor :?
Cobalah online!
Sederhana, tetapi mungkin perlu waktu untuk brute-force ;-) Menantikan crack cepat ;-)
Catatan kaki: dua yang pertama dan kondisi terakhir membuat jawabannya unik.
BTW bagaimana skor dihitung?
Petunjuk 1
sumber
Aceto , aman
Output TrueFalse jika benar, FalseFalse sebaliknya
Jumlahnya adalah
Cobalah online!
sumber
C #, Mono, Linux, Alpha, skor 1 (aman)
Cermat. Saya sungguh-sungguh. Ada banyak simulator alfa di luar sana. Gunakan satu dengan jitter atau ini tidak akan selesai.
Ini tergantung pada kenyataan bahwa Alpha adalah big-endian, menyebabkan System.BitConverter melakukan hal yang salah jika seseorang mencoba ini pada x86 atau x64. Saya menulis jawaban ini untuk menunjukkan kejahatan tantangan lebih dari apa pun.
sumber