Tugas Anda adalah menemukan dua karakter yang hilang dalam judul episode Columbo.
Memasukkan
Salah satu dari 69 judul episode Columbo (seperti yang tercantum di bawah), dengan tepat dua karakter diganti *
.
Contoh :
"Ran*om for a *ead Man"
Keluaran
Anda dapat mengembalikan judul episode lengkap, atau hanya dua karakter yang hilang dalam format wajar apa pun, asalkan urutan karakter tidak ambigu.
Beberapa output yang valid :
"Ransom for a Dead Man"
"sD"
["s", "D"]
Episode
Silahkan ikuti link ini untuk mendapatkan daftar terformat.
Prescription: Murder Swan Song Murder, Smoke and Shadows
Ransom for a Dead Man A Friend in Deed Sex and the Married Detective
Murder by the Book An Exercise in Fatality Grand Deceptions
Death Lends a Hand Negative Reaction Murder: A Self Portrait
Dead Weight By Dawn's Early Light Columbo Cries Wolf
Suitable for Framing Troubled Waters Agenda for Murder
Lady in Waiting Playback Rest in Peace, Mrs. Columbo
Short Fuse A Deadly State of Mind Uneasy Lies the Crown
Blueprint for Murder Forgotten Lady Murder in Malibu
Etude in Black A Case of Immunity Columbo Goes to College
The Greenhouse Jungle Identity Crisis Caution: Murder Can Be Hazardous to Your Health
The Most Crucial Game A Matter of Honor Columbo and the Murder of a Rock Star
Dagger of the Mind Now You See Him... Death Hits the Jackpot
Requiem for a Falling Star Last Salute to the Commodore No Time to Die
A Stitch in Crime Fade in to Murder A Bird in the Hand...
The Most Dangerous Match Old Fashioned Murder It's All in the Game
Double Shock The Bye-Bye Sky High IQ Murder Case Butterfly in Shades of Grey
Lovely But Lethal Try and Catch Me Undercover
Any Old Port in a Storm Murder Under Glass Strange Bedfellows
Candidate for Crime Make Me a Perfect Murder A Trace of Murder
Double Exposure How to Dial a Murder Ashes to Ashes
Publish or Perish The Conspirators Murder With Too Many Notes
Mind Over Mayhem Columbo Goes to the Guillotine Columbo Likes the Nightlife
Klarifikasi dan aturan
- Menyimpan daftar episode (atau menyimpan informasi yang cukup untuk menebak karakter yang hilang) adalah bagian dari tantangan. Dengan kata lain, Anda tidak mendapatkan daftar 'gratis'. Jika menggunakan file eksternal, panjangnya harus ditambahkan ke jumlah byte Anda.
- Program / fungsi Anda harus mendukung judul persis seperti yang tercantum di atas:
- Kasing setiap huruf harus sama persis.
- Tanda baca juga harus sama persis.
- Dll ...
- Semua karakter dalam judul dapat diganti dengan
*
, bukan hanya huruf. Mereka mungkin bersebelahan. - Anda dapat mengharapkan karakter 'kosong' yang lain alih-alih
*
, asalkan tidak muncul di mana pun dalam judul apa pun. (Jika demikian, harap sebutkan dalam jawaban Anda.)
Ah, hanya ada satu hal lagi. Saya hampir lupa...
- Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
Set tes
Berikut ini tautan ke semua input 14252 yang mungkin.
code-golf
string
error-correction
Arnauld
sumber
sumber
error-correction
tag yang, menurut saya, sesuai di sini.A
dana
dalam daftar string unik yang ada.',-.:ABCDEFGHIJLMNOPQRSTUWYabcdefghiklmnopqrstuvwxyz
(dan<space>
, tentu saja).Jawaban:
Stax , 294 byte
Jalankan dan debug itu
Inilah pendekatannya:
Untuk memverifikasi bahwa tidak ada hasil yang salah akan dihasilkan, saya menggunakan program C # untuk memverifikasi output untuk semua input yang mungkin. Ini tidak terlalu portabel, dan itu berjalan cukup lama. Saya telah membiarkannya mencari lebih dari 24 jam untuk kandidat penyebut sejauh ini, jadi itu tidak benar-benar cocok untuk TIO. Saya menjalankannya di LINQPad.
Catatan lain tentang penyimpanan nilai hash yang tertanam dalam program. Hash diurutkan sebelum dimasukkan ke dalam array. Saya menggunakan fitur stax yang disebut "array integer dijejalkan" yang merupakan cara yang secara efisien mewakili array integer. Representasi ini mampu menyimpan perbedaan antar elemen jika itu lebih efisien, jadi pre-sorting nilai-nilai menghemat beberapa byte.
Inilah representasi yang belum dibongkar dengan beberapa komentar minimal.
sumber
Python 2, 862 byte
Berikut ini adalah skrip bash yang merakit program ini dan menunjukkan pelaksanaannya.
Penjelasan
Ini adalah solusi yang cukup sederhana: Saya mencari permutasi paling kompresif dari judul-judul yang digabungkan dengan spasi. Program ini hanya menggantikan
*
input dengan.
, dan mencari kecocokan dengan ekspresi reguler di dalam string.String tersebut didekompresi menjadi:
sumber
JavaScript (ES6), 634 byte
Kiriman ini dimaksudkan untuk tetap disembunyikan sampai jawaban kurang dari 500 byte diterbitkan. Yang sekarang sudah dilakukan .
Cobalah online! (satu kasus uji acak per episode)
Bagaimana?
Kami mendefinisikan chr , daftar karakter yang digunakan dalam judul episode.
Kami mendefinisikan hash , sebuah string yang berisi hash dari semua judul yang tidak dikobarkan. Setiap hash terdiri dari 6 digit angka pada basis-36.
Kami mendefinisikan H () , fungsi hash sederhana.
Ini memberikan log 2 (36 6 ) ~ = 31 bit entropi. Dengan membulatkan ini menjadi 4 byte dan menambahkan ukuran chr , ukuran total data payload adalah: 4 * 69 + 53 = 329 byte .
Fungsi utama sekarang dibaca sebagai:
(Ini diuji secara mendalam terhadap semua input yang mungkin .)
sumber
Bahasa Wolfram
13831226 byteSunting Jarak menemukan jarak Levenshtein antara string.
sumber
Jelly , 752 byte
Cobalah online!
Gunakan ini untuk mengompres daftar.
Ini mengasumsikan bahwa tidak ada film yang memiliki 2 karakter persis berbeda dari film lain, yang terbukti di sini (output
1
).sumber
Ruby ,
11851165 byteCobalah online!
Seorang lambda menerima string dan mengembalikan string. Menggunakan beberapa ekspansi string buatan sendiri. Mungkin ada ruang untuk bermain golf baik dalam cara judul dipilih dari daftar yang diperluas, dan bagaimana tepatnya daftar itu dikompres.
-20 byte: Menyusun ulang urutan daftar (dengan tangan) untuk meningkatkan pengulangan substring
Tidak Terkumpul:
Berikut ini adalah potongan dari algoritma pemilihan substitusi serakah yang saya gunakan untuk menghasilkan kode ini. Saya telah menghilangkan beberapa detail sehingga tidak akan berfungsi apa adanya, tetapi seharusnya memberikan intinya.
sumber
Java 10,
142614051381131513131298 byte-66 bytes terima kasih kepada @ OlivierGrégoire dengan menyandikan String.
Penjelasan:
Cobalah online.
Ini kode untuk pembuat enkode.
sumber
java.nio.Files.readAllBytes(java.nio.Paths.get("a"))
. Dengan cara ini, tidak perlu bas64.796
dan1397
ditentukan?d.deflate(b)
dani.inflate(b)
denganSystem.out.println(d.deflate(b))
danSystem.out.println(i.inflate(b))
. Jika Anda mengirim teks, Anda harus memperbarui ukuran array.var bytes = new byte[9999]
dan output nomor. Jalankan kedua: ganti9999
dengan nilai yang dikeluarkan, dan hapusSystem.out.println()
. Jika Anda tidak melakukan ini, String Anda kemungkinan besar akan memiliki ukuran yang salah dan output akan kacau, mungkin itulah yang terjadi dengan golf 1290. API seharusnya bekerja dengan buffer, tetapi dalam kasus kami, kami ingin bermain golf, jadi kami harus menghitung ulang nilai-nilai itu. Jika tidak, kami kehilangan byte.Python 2 , 621 byte
Cobalah online!
Catatan: Sial! Hanya melihat ini pada dasarnya sama dengan solusi Arnauds ...
Belum sepenuhnya bermain golf ...
Ide dasar di sini: buat daftar hash dari judul, modulo 36 ^ 6 (ini membutuhkan 6 byte per judul; ditambah beberapa overhead).
Sekarang, diberi judul dengan dua karakter yang hilang, brute force mengganti dua huruf yang mungkin, dan periksa untuk melihat apakah hash string yang dihasilkan ada dalam daftar.
Dengan menambahkan 'B' ke judul dan menggunakan
hash
fungsi Python , kita mendapatkan daftar yang tidak pernah memiliki tabrakan dalam tugas itu; jadi akan selalu ada satu dan hanya satu jawaban yang mungkin.sumber