Ini adalah tantangan polisi dan perampok . Untuk utas polisi, buka di sini .
Tantangan ini melibatkan dua sekuens OEIS yang dipilih oleh polisi - S 1 , S 2 - dan seberapa baik sekuens-sekuens tersebut dapat di-golf dan dikaburkan.
Polisi sedang membangun kode A yang menghasilkan S 1 dan memberikan angka X yang mereka klaim adalah jarak Levenshtein terbaik (dalam karakter) untuk membuat B yang menghasilkan S 2 .
Tantangan Perampok
Untuk memecahkan pengajuan polisi tertentu, perampok harus membuat program C dalam bahasa yang sama (dan versi) karena jawaban yang menghasilkan S 2 (n) dan karakter Y berubah dari A (dengan Y <= X
). Perampok tidak perlu menemukan kode B yang sama persis dengan yang dihasilkan oleh polisi (secara diam-diam). Pengajuan para perampok harus mematuhi indeks-0 atau indeks-1 yang sama seperti yang ditentukan oleh pengajuan polisi.
Jika Anda mengelola ini, posting jawaban dengan solusi, tautkan ke jawaban polisi, dan tinggalkan komentar pada jawaban polisi yang menghubungkan kembali ke jawaban Anda.
Setiap jawaban polisi hanya dapat di-crack satu kali, dan tentu saja, Anda tidak diizinkan untuk memecahkan jawaban Anda sendiri. Jika jawaban polisi ternyata tidak valid sebelum atau setelah retak, itu tidak dihitung terhadap skor perampok.
Menang dan Mencetak Gol
Perampok dicetak oleh (X - Y)*5 + 5
untuk setiap retakan mereka, dan perampok dengan skor keseluruhan tertinggi menang.
Aturan selanjutnya
- Anda tidak boleh menggunakan built-in apa pun untuk hashing, enkripsi, atau pembuatan nomor acak (bahkan jika Anda menyemai generator nomor acak ke nilai tetap).
- Program atau fungsi diizinkan, tetapi kode tidak boleh berupa cuplikan dan Anda tidak boleh menganggap lingkungan REPL.
- Anda dapat mengambil input dan memberikan output dalam format apa pun yang nyaman . Metode input / output harus sama untuk kedua urutan.
- Kalkulator definitif untuk jarak Levenshtein untuk tantangan ini adalah yang ini di Planet Calc.
- Selain menjadi tantangan CnR, ini adalah kode-golf sehingga semua aturan golf biasa berlaku.
sumber
Jawaban:
Pyke, Levenshtein jarak 1, A036487 , A135628 - skor 5
Crack dari suatu entri dengan muddyfish
Coba di sini!
Kode asli
X*e
,, kuadrat inputX
,, dikalikan dengan input*
, dan membagi dua kemudian lantai hasil,e
,.Kuncinya adalah bahwa
'X'
56 di representasi basis 96w
, jadiwX
hasilkan 56, kalikan dengan input lalu turunkan dan belah dua dan Anda mendapatkan 28 kali input sesuai kebutuhan.sumber
Brain-Flak , 28 byte, Jarak 4, A002817 , A090809
Jawaban ini ditemukan dengan bantuan brute-forcer, yang menghasilkan 35.000 program yang mungkin (banyak di antaranya tidak seimbang, dan dengan demikian kode antipeluru otak tidak valid, tetapi saya tetap menggunakan bug dan menemukan jawabannya). Ini adalah sekitar program 20 ribu diuji, dan butuh sekitar satu jam untuk menemukan (meskipun saya tidak tahu persis berapa lama sejak saya pergi ketika selesai).
Saya agak tidak ingin mengirim jawaban ini, karena saya belum memiliki pemahaman penuh tentang cara kerja program ini. Namun, jawabannya sudah aman jadi saya tidak ingin kedaluwarsa. Saya berharap untuk memperbarui jawaban ini lebih banyak setelah saya sepenuhnya memahaminya, serta memposting kode yang saya gunakan untuk menemukan jawaban ini. Tetapi untuk sekarang, saya hanya akan memposting penjelasan parsial.
Ini masuk akal karena OEIS menyatakan:
Dan A000124 adalah angka segitiga + 1. Namun, saya tidak tahu persis apa itu forumla, jadi saya tidak bisa sepenuhnya menjelaskan cara kerjanya.
sumber
Perl 6, 19 byte, X = 1, A000045 → A000035
+>
di tempat+<
juga akan bekerja.Cobalah online!
Bagaimana itu bekerja
infix ... cukup berguna untuk urutan rekursif sederhana. Bagian
(0,1,*+*...*)
dari kode asli, yang merupakan singkatan untukmenentukan urutan yang dimulai dengan 0 dan 1 , lalu menambahkan item dengan menghitung jumlah dari dua item sebelumnya dari urutan.
Sebaliknya,
(0,1,*+<*...*)
gunakan bit-shift kiri (+>
, bit-shift kanan juga berfungsi) untuk membangun urutan paritas. Karena menggeser 1 nol unit ke kiri adalah 1 , dan menggeser 0 satu unit ke kiri adalah 0 , kita mendapatkan pola bolak-balik satu dan nol yang diinginkan.sumber
Perl 6 , 10 byte, jarak 1 - skor 5
Retak entri oleh seseorang
Menjadi:
Cobalah secara Online!
sumber
*[0]o
untuk berada di sana. Saya kira itu berarti saya bisa datang dengan tantangan lain berdasarkan "trik" saya ... :)***
dan berpikir sepertinya bisa membuka operasi perkalian diad*
, dengan argumen sebelumnya, saya benar-benar tidak tahu apa kode sebenarnya. Jangan ragu untuk mengedit dalam beberapa penjelasan!1***
diuraikan sebagai1 ** *
, yaitu lambda yang melakukan "1 pangkat x".1*+*
diuraikan sebagai1 * (+*)
, yaitu lambda yang melakukan "1 dikalikan dengan (x dikonversi ke angka)".Perl 6 , jarak 2, smls
Asli:
Retak:
Cobalah online!
sumber
+(^*Z%2)
. Saya kira saya tidak pandai merancang tantangan ini.WolframAlpha, Jarak 1, Greg Martin , A002378 , A000537
Bagaimana itu bekerja
Saya menyadari bahwa yang menarik, (n * (n + 1) / 2) ^ 2 adalah formula untuk urutan kedua. Karena jumlah (1 ke n) sama dengan n * (n + 1) / 2, saya hanya perlu mengganti * ke a ^.
sumber
Brain-Flak , 20 byte, DJMcMayhem
Cobalah online!
Menambahkan a
({})
di awal loop untuk menggandakan nilai di setiap iterasi.sumber
({(({}[()])){}}{})
JavaScript, Jarak 4, LliwTelracs
Asli:
Retak:
Cobalah online!
sumber
JavaScript (ES6), Jarak 1, Lebih Lanjut
Asli:
Retak:
Cobalah online!
atau
Cobalah secara Online!
Entah bagaimana saya bisa membuatnya berperilaku berbeda antara TIO dan repl.it (sama sekali tidak tahu mengapa 2 * 1 ^ ... akan sama dengan 0 sesuai dengan repl.it)
sumber
as=function(){ return 2*2**((1^1)*-1*~arguments[0]/11-(4-(as+[]).length%89))-(as+[]).length%7}
.Javascript, 41 byte, Jarak 3, A061313, A004526
Cobalah online!
sumber
Jawa, Jarak 4, Peech , A094683 , A000290
Asli:
Retak:
mengembalikan n * n
sumber
Javascript, Advancid , jarak 2, A059841 dan A000004
Hanya meninggalkan kode di belakang tautan TIO karena sepertinya akan merusak situs.
Berkat @nderscore, yang kodenya saya gunakan untuk mendekripsi kode awal
Ada beberapa kode yang berlebihan seperti menggunakan !! [] + [] + [] bukannya !! [] + [].
Penambahan! + [] - (! + []) (+ 1-1) awalnya mencegah dekripsi.
Cobalah secara Online
sumber
Pyke, Levenshtein jarak 2, A008788, A007526
Coba di sini!
Bagaimana itu bekerja
Ini melakukan konversi basis campuran.
'S
ambil input n dan terapkan, mendorong [1, ..., n] pada stack. SelanjutnyaS
mengambil input n dan mendorong array yang sama sekali lagi.'
tampaknya menyebabkan perintah berikutnya diterapkan ke atas sebelumnya di stack; Saya agak kabur pada detailnya.Akhirnya,
^
terapkan konversi basis campuran, jadi [1, ..., n] [1, ..., n]f
menghitunga (n): = [1] n + n + (n) (n-1) .. . + [n!] 1 di mana tanda kurung menunjukkan nilai tempat dan nomor di sebelah kanan digitnya.
Sekarang, a (n) = (1 + (1) (n-1) + (n-1) (n-2) (n-3) + ... + (n-1)!) N = n ( a (n) + 1) , yang merupakan rumus rekursif yang sama yang mendefinisikan a (n) dalam [A007526]. Karena jumlah kosong adalah nol, a (0) = 0 dan case dasar juga cocok.
sumber