Ini adalah tantangan Polisi dan Perampok. Ini adalah utas polisi. The benang perampok di sini .
Sebagai seorang polisi, Anda harus memilih urutan apa pun dari OEIS , dan menulis program p yang mencetak bilangan bulat pertama dari urutan itu. Anda juga harus menemukan beberapa string yang s . Jika Anda memasukkan s di suatu tempat ke p , program ini harus mencetak bilangan bulat kedua dari urutan. Jika Anda memasukkan s + s ke lokasi yang sama di p , program ini harus mencetak bilangan bulat ketiga dari urutan. s + s + s di lokasi yang sama akan mencetak yang keempat, dan seterusnya dan seterusnya. Ini sebuah contoh:
Python 3, urutan A000027
print(1)
String tersembunyi adalah dua byte .
String adalah +1
, karena program print(1+1)
akan mencetak bilangan bulat kedua di A000027, program print(1+1+1)
akan mencetak bilangan bulat ketiga, dll.
Polisi harus mengungkapkan urutan, p program asli , dan panjang string yang tersembunyi s . Perampok memecahkan kiriman dengan menemukan string apa pun hingga panjang itu dan lokasi untuk memasukkannya untuk membuat urutan. String tidak perlu cocok dengan solusi yang dimaksudkan untuk menjadi celah yang valid, juga tidak lokasi di mana dimasukkan.
Aturan
Solusi Anda harus bekerja untuk nomor apa pun dalam urutan, atau setidaknya sampai batas yang wajar di mana ia gagal melakukan pembatasan memori, integer / stack overflow, dll.
Perampok yang menang adalah pengguna yang memecahkan sebagian besar kiriman, dengan tiebreak yang mencapai jumlah celah pertama.
Polisi menang adalah polisi dengan string terpendek s yang tak retak. Tiebreak adalah terpendek p . Jika tidak ada pengiriman yang tidak terputus, polisi yang memiliki solusi tidak terpecahkan untuk kemenangan terlama.
Agar dinyatakan aman, solusi Anda harus tetap tidak retak selama 1 minggu dan kemudian memiliki string tersembunyi (dan lokasi untuk memasukkannya) terungkap.
s mungkin tidak bersarang, itu harus digabungkan ujung ke ujung. Sebagai contoh, jika s adalah
10
, setiap iterasi akan pergi10, 1010, 101010, 10101010...
daripada10, 1100, 111000, 11110000...
Dapat diterima untuk memulai istilah kedua dari urutan daripada yang pertama.
Jika urutan Anda memiliki jumlah istilah yang terbatas, melewati istilah terakhir diizinkan untuk menghasilkan perilaku yang tidak ditentukan.
Semua solusi kriptografi (misalnya, memeriksa hash dari substring) dilarang.
Jika s berisi karakter non-ASCII, Anda juga harus menentukan penyandian yang digunakan.
sumber
Jawaban:
MATL , urutan A005206 . Retak oleh SamYonnou
Cobalah online!
String tersembunyi memiliki 8 byte .
sumber
Python 2 , urutan A138147 ( retak )
Cobalah online!
String tersembunyi adalah 7 byte . Urutannya berbunyi:
sumber
Tong , urutan A000045
String tersembunyi adalah ≤ 6 byte (untuk memenuhi aturan cracking yang diperbarui)
sumber
Retak
Brain-Flak , urutan A000290 (Angka kuadrat )Cobalah online!
String tersembunyi adalah 6 byte .
Fakta menyenangkan:
Saya "menemukan" properti ini saat memainkan permainan berbasis otak ini . String tersembunyi adalah item yang dibuat secara acak yang saya temukan sangat berguna.
sumber
Java 8+, berurutan A010686 ( retak oleh xnor )
Fungsi lambda.
String tersembunyi adalah ≤ 5 byte
sumber
^2<<1
tetapi itu hal yang sama.Python 3 , urutan A096582
Ini sangat sepele, karena saya belum pernah mencoba tantangan Polisi dan Perampok sebelumnya.
String tersembunyi adalah 3 byte.
sumber
Pyret , urutan A083420 , Retak
String tersembunyi memiliki 4 byte atau lebih sedikit.
sumber
Python 3 , urutan A014092 - ( retak )
Cobalah online!
Urutan tersembunyi adalah 82 byte .
Kode yang saya maksudkan (yang tidak bergantung pada Dugaan Goldbach) adalah:
Retak oleh NieDzejkob , yang menggunakan Goldbach Conjecture untuk menyelesaikannya dalam magis 42 karakter. Kerja bagus!
sumber
Keempat (gforth) , A000042 - ( retak )
Cobalah online!
Urutan tersembunyi adalah 5 byte , dan dapat dengan mudah menangani ratusan istilah.
Solusi satu byte yang rusak karena integer overflow juga dimungkinkan. Bahkan, saya akan mengatakan itu memalukan sepele. Sementara teks tantangan, di bawah beberapa interpretasi, mungkin memungkinkan Anda untuk menyebut itu sebagai celah, saya mendorong Anda untuk tidak melakukannya.
sumber
V , urutan A000290 . Retak oleh Sapi dukun
Cobalah online!
String tersembunyi adalah 5 byte .
sumber
Kalkulator Desktop , urutan A006125
String tersembunyi ≤ 12 byte .
sumber
Brain-Flak , urutan A000984 (koefisien binomial pusat)
Cobalah online!
String tersembunyi memiliki 36 byte atau kurang.
sumber
Python 3 , A268575
Cobalah online!
Urutan tersembunyi adalah 102 byte.
sumber
Haskell , urutan A083318 ( retak )
Cobalah online!
String tersembunyi adalah 5 byte . Urutannya berbunyi:
sumber
Brain-Flak , urutan A000578 (Angka kubus)
Cobalah online!
String tersembunyi adalah 16 byte
sumber
Retak
cQuents , urutan A003617Cobalah online!
String tersembunyi adalah 1 byte .
sumber
Unefunge-98 (PyFunge) , urutan A000108
Cobalah online!
Urutan tersembunyi adalah 19 byte .
sumber
MATL , urutan A000796 . Retak oleh SamYonnou
Cobalah online!
String tersembunyi memiliki 3 byte .
sumber
Python 3 , A008574 , dipecahkan oleh xnor
Cobalah online!
Masukkan 4 byte untuk menyelesaikan A008574. A008574: a (0) = 1, setelah itu a (n) = 4n.
sumber
AsciiDots , 36 byte, A019523
Cobalah online!
String tersembunyi memiliki 12 byte .
sumber
Haskell , urutan A014675 , dipecahkan oleh nimi
Cobalah online!
Urutan tersembunyi adalah 35 byte .
Inilah solusi yang saya maksud:
sumber
VDM-SL , urutan A000312
String tersembunyi memiliki 33 byte atau kurang
sumber
Haskell, A000045 (Fibonacci) - Cracked
Saya punya solusi dengan kekalahan 23 byte. Saya tidak berharap ini aman lama, tapi itu sangat menyenangkan untuk datang dengan.
Larutan:
sumber
Java 8+ , 1044 bytes, berurutan A008008 (Aman)
Cobalah online!
Dapat dipecahkan menggunakan string tersembunyi ukuran 12 . Pasti bisa bermain golf lebih banyak, tetapi tidak mungkin ini benar-benar menang. Saya hanya ingin berkontribusi karena menghormati nomor 8008.
Catatan: sebelum ada yang mengeluh bahwa urutannya adalah hard-coded, saya sudah menguji ini hingga istilah pertama yang menyimpang dari hard-coding (istilah ke-13 = 307) dan ia mendapatkannya dengan benar meskipun lambat. Ini juga mengapa menggunakan
long
alih-alihint
, jika tidak meluap sebelum istilah itu.Pembaruan (12 Jul 2019) : diperbarui untuk menjadi lebih banyak pemain. Hitung istilah 13 dalam 30 detik di komputer saya sekarang, bukan 5 menit.
Pembaruan (17 Jul 2019) : bug yang diperbaiki untuk loop batas
g
fungsi, dan batas panjang array di bagian bawahf
fungsi. Bug ini seharusnya pada akhirnya menyebabkan masalah, tetapi tidak cukup awal untuk tertangkap hanya dengan memeriksa output. Dalam kedua kasus, karena kehadiran bug ini 5 hari ke dalam permainan mungkin telah membingungkan beberapa orang cukup untuk tidak dapat memecahkan teka-teki ini, saya benar-benar baik-baik saja dengan memperpanjang batas waktu "aman" hingga 24 Juli untuk pengiriman ini.Pembaruan (18 Jul 2019) : Setelah beberapa pengujian saya telah mengkonfirmasi bahwa kelebihan mulai setelah suku ke-4 secara berurutan dan mulai memengaruhi validitas keluaran setelah suku ke-19. Juga dalam program seperti yang tertulis di sini, setiap istilah berturut-turut membutuhkan waktu sekitar 5 kali lebih lama dari sebelumnya untuk menghitung. Istilah ke-15 memakan waktu sekitar 14 menit di komputer saya. Jadi sebenarnya menghitung istilah ke 19 menggunakan program seperti yang ditulis akan memakan waktu lebih dari 6 hari.
Juga, ini adalah kode dengan spasi / indentasi waras sehingga sedikit lebih mudah dibaca jika orang tidak memiliki IDE dengan pemformatan otomatis.
Larutan
sumber
Brachylog , 7 byte ( Brachylog SBCS ), A114018 ( Retak )
Pecahkan secara online!
String memiliki 2 byte atau lebih sedikit.
sumber
b
itu cukup mencurigakan ...C # (.NET Core), A003678, 29727 byte (Aman)
Urutan tersembunyi adalah 4 byte atau kurang.
sumber
.code.tio(1,284): error CS0103: The name 'CodeDomProvider' does not exist in the current context .code.tio(1,390): error CS0246: The type or namespace name 'CompilerParameters' could not be found (are you missing a using directive or an assembly reference?)
System.CodeDom
, juga membuat file sehingga tidak akan bekerja pada tioSystem.CodeDom
Prolog (SWI) , 28 byte, A011557 , aman
Cobalah online!
(Saya tidak begitu yakin apa yang dianggap sebagai program lengkap untuk Prolog, tetapi ini berfungsi sebagai program di TIO.)
String tersembunyi adalah 5 byte atau kurang.
Saya sedikit terkejut ini bisa bertahan seminggu ... Tali tersembunyi
sumber