Diberikan file kamus (file teks yang berisi kata atau frasa pada setiap baris, dengan tanda baca yang memungkinkan tetapi tidak ada angka; baris diurutkan menurut abjad), Anda harus menampilkan setiap kombinasi kata di mana satu huruf dapat dihapus dari kata untuk membuat yang lain; surat yang dihapus harus dimasukkan dalam tanda kurung.
Misalnya input
cat
cart
code
golf
ode
verify
versify
harus memberikan output
ca(r)t
(c)ode
ver(s)ify
Berbagai cara untuk mendapatkan pasangan yang sama hanya harus ditampilkan satu kali. Anda dapat menampilkan scra(p)ped
atau scrap(p)ed
, tetapi tidak keduanya.
Output harus dipesan berdasarkan abjad dengan entri yang lebih panjang;
mart
mar
mat
ma
harus memiliki keluaran
ma(r)
ma(t)
ma(r)t
mar(t)
dan dua yang terakhir bisa dalam urutan mana pun.
File kamus dapat meliputi huruf besar, spasi, tanda hubung, atau apostrof; ini harus diabaikan. Contohnya,
inlay
in-play
harus menghasilkan in(p)lay
. Output Anda semua harus dalam kasus yang sama. Ruang kosong ekstra diizinkan.
Input dapat berupa STDIN atau dari file; dipisahkan oleh baris baru. Output dapat berupa nilai balik fungsi atau STDOUT (atau ditulis ke file jika Anda mau).
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
(Ini adalah tantangan pertama saya di PPCG - beri tahu saya jika saya melakukan kesalahan dan saya akan memperbaikinya.)
mart mar mat ma
? Apakah akanmar(t) ma(r)t ma(r) ma(t)
?Jawaban:
Perl -an0, 101 + 3 byte
dimana
@F
adalah kamus, disimpan dalam larik, disediakan oleh sihir bendera runtime. (b-oost, BoO # @% @ # $% $ # @ T)map{s/\W//g;lc}@F
menghapus semua simbol dari kata-kata dan mengubah semuanya menjadi huruf kecil. (boost, boot)sort{length$b<=>length$a}
macam panjangnya. (boot, boost)map{ (...) while/(.)(?!\1)/g}@F
cocok dengan semua karakter yang tidak ditindaklanjuti dengan karakter yang sama ([b] oot, bo [o] t, boo [t], ...)print"$`($1)$'\n"
mencetak bagian-bagian yang mendahului, kurung, dan menyukseskan pertandingan ... (boo t)if $`.$'~~@F
... jika rangkuman dari semuanya sebelum dan sesudah pertandingan ada di kamus. ([dorongan])sumber
JavaScript (ES6), 225
Fungsi dengan parameter string, tidak ada input dari file. Saya bertanya kepada OP apakah ini bisa valid.
Tes menjalankan cuplikan di peramban yang mendukung EcmaScript 6 (menerapkan fungsi panah, string templat, operator sebar - Firefox, mungkin Safari atau MS Edge, bukan Chrome)
sumber
Ruby, 173
Uji di sini: http://ideone.com/86avbe
Versi yang dapat dibaca di sini: http://ideone.com/ynFItB
sumber
['jacklantern','jackslantern','jack-o-lantern']
. Dikt.The output should be ordered by the longer entry;
...and the latter two could be in either order.
Ruby, 211
Saya memutuskan untuk mengambil pendekatan berbeda untuk menyelesaikan ini, menggunakan regex.
sumber
Perl 5, 210
Kode memuat input dalam array yang diurutkan, dan memeriksa setiap nilai terhadap semua nilai dalam array yang lebih panjang 1 byte.
Uji
sumber
Haskell, 201 byte
Saya tidak yakin format input apa yang diizinkan.
f
mengambil daftar string. Jika hanya satu string (dengan kata-kata yang dipisahkan nl) yang diizinkan, tambahkan.lines
kef
(+6 byte).Contoh penggunaan:
Cara kerjanya: ubah setiap kata menjadi huruf kecil dan simpan hanya huruf-hurufnya. Bagi setiap kata
x
menjadi dua bagian pada setiap posisi yang memungkinkan dan buatlah tiga kali lipat di(i,j,k)
manai
bagian pertama,j
adalah karakter pertama dari bagian kedua dank
merupakan ekor dari bagian kedua. Simpan tiga kali lipat di tempat yangi++k
juga muncul dalam daftar kata. Jika daftar ini tidak kosong, ambil elemen pertama, sebut saja(l,m,n)
. Mengubah semua daftar kepala ke dalam format output yang dibutuhkan oleh sekitarnyam
dengan()
dan meletakkan antaral
dann
.sumber