Lihat juga: Nenek mencintai Ana
Anda akan diberi serangkaian huruf ASCII huruf kecil. Menggunakan file kamus ini (DIPERBARUI), tugas Anda adalah menyelesaikan anagram. Untuk menyelesaikan anagram, Anda harus mengeluarkan semua kata atau grup kata yang dapat dibentuk menggunakan setiap huruf dari string input tepat satu kali, dipisahkan oleh baris baru. Grup dengan kata yang sama dalam urutan yang berbeda tidak unik dan tidak boleh di-output secara terpisah; Namun, urutan kata-katanya tidak masalah . Urutan solusi keluaran juga tidak masalah . Jika input tidak dapat membentuk kata, tidak menghasilkan apa-apa.
Beberapa kasus uji yang berguna:
Input: viinlg
Output: living
Input: fceodglo
Output: code golf
Input: flogflog
Output: golf golf
Input: ahwhygi
Output: highway
high way
Input: bbbbbb
Output:
Aturan / peringatan:
Anda dapat mengakses daftar kamus dengan cara apa pun yang Anda suka. Argumen baris perintah, stdin, membaca dari file, atau membaca dari internet semuanya dapat diterima.
Input akan terdiri dari huruf ASCII huruf kecil saja. Anda tidak diharuskan untuk menampilkan hasil dalam kasus tertentu.
Anda tidak akan diberi string yang sudah membentuk kata yang valid (namun, Anda dapat diberikan string yang membentuk banyak kata, seperti
bluehouse
).Trailing newlines diperbolehkan tetapi tidak diperlukan.
Celah standar berlaku.
Ini adalah kode-golf . Kode terpendek dalam byte menang. Semoga berhasil!
sumber
Jawaban:
Python 2 ,
341327337320 byteSolusi ini mengasumsikan kamus disimpan dalam variabel
w
sebagai serangkaian string. Set pertamacombinations
tidak perlu menggunakancombinations_with_replacement
, tetapi menggunakan yang terakhir menghemat byte.Cobalah online!
Input - Kata anagram yang diikuti oleh kamus kata sebagai satu set:
Edit: Input yang Diperbarui.
sumber
Python 3 ,
248202 byteCobalah online!
Masukan adalah sebagai berikut:
Mempercepatnya:
Untuk tujuan pengujian, jika Anda mengubah dari
I,*S=iter(input,'')
menjadiI=input();S=set(iter(input,''))
, runtime akan berkurang secara drastis dan hasilnya akan sama.Penjelasan:
Di setiap permutasi input, ia mencoba untuk membagi permutasi secara rekursif di semua lokasi yang mungkin, mulai dari kiri ke kanan, tanpa melewatkan huruf, dengan kata-kata yang ada di kamus. Jika kombinasi split cocok dengan semua permutasi input, kata-kata split diurutkan dan ditambahkan ke
set
yang akan dicetak pada dan dari evaluasi.sumber
Javascript,
139137129 Bytes-2 Bytes berkat @FelipeNardiBatista
-8 Bytes terima kasih sudah membaca dokumen;)
Dimasukkan ke dalam kamus sebagai input dalam bentuk array string.
Penjelasan:
Untuk setiap kata dalam kamus, periksa apakah setiap huruf terkandung dalam kata yang dipilih, sekaligus menghapusnya dari kata tersebut. Di akhir setiap entri kamus, kembalikan kata ke kondisi tidak berubah untuk memeriksa kecocokan lebih lanjut.
sumber