Dalam sebuah kecelakaan yang sangat tidak biasa yang melibatkan sampel kecil radium, paus tersengat listrik, dan tiga beruang bergetah, beberapa kode sumber The Management ™ telah dimutasi. Atasan The Management ™ tidak tahu, sebenarnya para Polisilah yang bertanggung jawab, dalam upaya untuk menggagalkan rencana "jahat" Manajemen. Jadi Robbers® telah dipekerjakan dalam upaya untuk mengambil kode asli, karena siapa yang terkadang tidak suka menjadi jahat?
catatan: Tantangan ini sangat terinspirasi oleh Unscramble the Source Code .
Deskripsi
Ini adalah tantangan polisi dan perampok .
- The polisi akan menulis sebuah program (kode bermutasi) yang melakukan tugas # 1 (dan juga menulis sebuah program yang melakukan tugas # 2, tapi dirahasiakan).
- The perampok akan mencoba untuk membalikkan "mutasi" dan mengubah kode asli ini ke kode yang melakukan tugas # 2.
Dalam tantangan ini, Tugas # 1 akan menampilkan n
bilangan prima th , dan Tugas # 2 akan menampilkan n
bilangan Fibonacci th (yang entah bagaimana jahat, menurut Cops © pula). Urutan Fibonacci didefinisikan sebagai ( n=1
→ 1
; n=2
→ 1
; n=3
→ 2
;;)), dan bilangan prima didefinisikan sebagai ( n=1
→ 2
; n=2
→ 3
; n=3
→ 5
; → ) ...
Tujuan polisi adalah untuk meminimalkan perbedaan antara program yang menyelesaikan Tugas # 1 dan Tugas # 2, sekaligus mencegah para perampok menciptakan kembali kode yang menyelesaikan Tugas # 2.
Aturan Cop
Polisi akan menulis dua program (satu yang menyelesaikan Tugas # 1, dan satu yang menyelesaikan Tugas # 2), dan menjadikan informasi berikut ini publik:
- Program pertama (yang menampilkan
n
bilangan prima th) - The Levenshtein mengedit jarak antara program pertama dan program kedua
- Bahasa pemrograman tempat kedua program ditulis (harus bahasa yang sama untuk kedua program)
Batasan berikut berlaku untuk kedua program:
- Panjangnya harus 128 karakter atau kurang.
- Mereka hanya harus menggunakan ASCII yang dapat dicetak (ditambah baris baru, yang juga diperbolehkan).
- Mereka harus berjalan kurang dari 10 detik
n=45
, dan mereka tidak diharuskan untuk menghasilkan output yang benar untuk apa punn>45
. - Mereka tidak boleh menggunakan fungsi hashing atau kriptografi.
Aturan Perampok
Perampok akan berusaha mengubah program polisi (yang menyelesaikan Tugas # 1) menjadi program yang menyelesaikan Tugas # 2 (tidak harus program asli yang ditulis oleh polisi) dalam jarak sunting yang ditentukan oleh polisi.
Pengajuan yang sudah-retak tidak bisa dipecahkan lagi (hanya perampok pertama yang memecahkan kiriman yang mendapat kredit).
Setelah memecahkan kiriman, silakan lakukan hal berikut:
- Posting jawaban untuk pertanyaan yang menyertai tantangan ini (tautan) , berikan bahasa, solusi Anda, dan tautan ke jawaban asli.
- Tinggalkan komentar dengan teks "Retak" yang menautkan ke jawaban Anda yang diposting.
- Edit jawaban polisi jika Anda memiliki hak istimewa edit (jika tidak, tunggu sampai orang lain dengan hak istimewa yang diperlukan melakukannya untuk Anda atau menyarankan edit).
Mencetak gol
Jika program polisi tetap tidak terpecahkan selama 1 minggu, polisi dapat memposting kode asli yang menyelesaikan Tugas # 2 (dalam jarak edit yang ditentukan), dan pengiriman sejak saat itu dianggap "aman." Pengiriman aman yang memiliki jarak pengeditan terkecil akan menang. Dalam hal seri, program terpendek (asli yang menyelesaikan Tugas # 1) menang. Jika dua pengiriman masih terikat, satu yang diposting sebelumnya menang.
Jika seorang perampok berhasil memecahkan kiriman polisi, skor perampok naik oleh jarak pengeditan kiriman itu. Misalnya, seorang perampok yang memecahkan kiriman dengan jarak sunting 3 dan satu dengan jarak 5 menghasilkan 8 poin. Perampok dengan skor tertinggi menang. Dalam hal seri, perampok yang mendapatkan skor pertama menang.