Dalam Keep Talking and Nobody Explodes , pemain ditugasi menjinakkan bom berdasarkan informasi dari "pakar" mereka (orang lain dengan manual). Setiap bom terdiri dari modul-modul, salah satunya bisa berupa kata sandi, di mana pakar diberikan daftar kata sandi yang mungkin, panjangnya lima huruf:
about after again below could
every first found great house
large learn never other place
plant point right small sound
spell still study their there
these thing think three water
where which world would write
Dan pemain diberikan daftar 6 huruf yang mungkin untuk setiap tempat di kata sandi. Dengan kombinasi huruf yang memungkinkan, berikan kata sandi yang benar. Input dapat dalam format apa pun yang wajar (array 2D, string dipisahkan oleh baris baru, dll.) Anda dapat mengabaikan kode yang Anda gunakan untuk mengompres / membuat daftar / string / array / apa pun kata sandi. (Terima kasih @DenkerAffe)
CATATAN: Kata sandi tidak sensitif huruf besar / kecil. Anda dapat berasumsi bahwa input hanya akan menyelesaikan satu kata sandi.
Contoh / Kasus Uji
Input di sini akan direpresentasikan sebagai array string.
["FGARTW","LKSIRE","UHRKPA","TGYSTG","LUOTEU"] => first
["ULOIPE","GEYARF","SHRGWE","JEHSDG","EJHDSP"] => large
["SHWYEU","YEUTLS","IHEWRA","HWULER","EUELJD"] => still
<
dalam solusi Bash saya, misalnya.Jawaban:
Pyth, 13 byte
Suite uji.
sumber
Bash, 22 byte
Jalankan seperti itu:
sumber
fold -5<<<ABOUTAFTERAGAINBELOWCOULDEVERYFIRSTFOUNDGREATHOUSELARGELEARNNEVEROTHERPLACEPLANTPOINTRIGHTSMALLSOUNDSPELLSTILLSTUDYTHEIRTHERETHESETHINGTHINKTHREEWATERWHEREWHICHWORLDWOULDWRITE|grep `printf [%s] $@`
JavaScript (ES6), 62 byte
53 byte pada Firefox 48 atau sebelumnya:
Akan menjadi 49 byte jika bukan karena persyaratan ketidaksensitifan kasus:
Tampilkan cuplikan kode
sumber
Brachylog , 25 byte
Bytes yang tidak terhitung adalah array kata, termasuk tanda kurung.
Penjelasan
sumber
Ruby,
484239 byteSekarang sudah selesai, sangat mirip dengan solusi Pyth,
tetapi tanpake titik di mana itu pada dasarnya adalah port langsung sekarang.%s
memformatJika Anda hanya menampilkan hasilnya dengan
puts
, Anda tidak perlu[0]
pada akhirnya karenaputs
akan berurusan dengan itu untuk Anda.Dengan uji kasus:
sumber
JavaScript (ES6), 71 byte
Pemakaian:
sumber
Python,
646057 byteKode untuk membuat daftar kata
w
sebagai string, kata-kata dipisahkan oleh ruang (byte didiskon dari panjang kode solusi):Solusi saat ini (57 byte): disimpan 3 byte berkat @RootTwo
Fungsi ini mengambil
tuple
(tidaklist
!) Persis 5 string yang mewakili huruf yang mungkin untuk setiap karakter kata sandi sebagai input.Lihat kode ini berjalan di ideone.com
Versi kedua (60 byte):
Fungsi ini mengambil
tuple
(tidaklist
!) Persis 5 string yang mewakili huruf yang mungkin untuk setiap karakter kata sandi sebagai input.Lihat kode ini berjalan di ideone.com
Versi pertama (64 byte):
Fungsi ini mengambil semua iterable (misalnya
list
atautuple
) dari tepat 5 string yang mewakili huruf yang mungkin untuk setiap karakter kata sandi sebagai input.Lihat kode ini berjalan di ideone.com
sumber
"(?i)\\b"+"[%s]"*5%a
w=...
baris kode: " Solusi aktual (57 byte, disimpan 3 byte berkat @RootTwo): "Hoon , 125 byte
Tidak Disatukan:
Hoon tidak memiliki regex, hanya sistem pengurai parser. Ini membuatnya cukup rumit untuk membuat semuanya berfungsi:
(mask "abc")
diterjemahkan secara kasar ke regex's[abc]
, dan merupakan inti dari parser yang sedang kita bangun.;~(plug a b)
adalah ikatan monadik dua parser di bawah++plug
pengurai di , yang harus mengurai yang pertama dan kemudian yang kedua atau gagal.++knee
digunakan untuk membangun parser rekursif; kami memberikannya tipe (*tape
) dari hasilnya, dan panggilan balik untuk memanggil untuk menghasilkan parser yang sebenarnya. Dalam hal ini, callback adalah "panggil seluruh penutupan lagi, tetapi dengan bagian belakang daftar sebagai gantinya". The?~
tes Rune adalah daftar kosong, dan memberikan(easy ~)
(melakukan apa pun tidak mengurai dan kembali ~) atau menambahkan yang lainmask
dan recurse lagi.Setelah membuat parser, kita bisa menggunakannya.
++skip
menghapus semua elemen daftar di mana fungsi mengembalikan ya untuk.++rust
mencoba mengurai elemen dengan aturan kami, mengembalikan yangunit
mana salah satu[~ u=result]
atau~
(versi Haskell's Maybe kami). Jika itu~
(Tidak ada, dan aturan gagal mem-parsing atau tidak mem-parsing seluruh konten), maka fungsi mengembalikan true dan elemen dihapus.Yang tersisa adalah daftar, hanya berisi kata di mana setiap huruf adalah salah satu opsi dalam daftar yang diberikan. Saya berasumsi bahwa daftar kata sandi sudah dalam konteks di bawah nama
pass
.sumber
Python 3, 81 byte
Fungsi anonim yang mengambil input dari daftar string
x
dan mengembalikan kata sandi.Daftar kemungkinan kata sandi
l
didefinisikan sebagai:Ini adalah kekuatan kasar yang sederhana; Saya tertarik melihat betapa singkatnya saya bisa mendapatkan ini tanpa regex.
Bagaimana itu bekerja
Cobalah di Ideone
sumber