Saya harus bertanya-tanya kemarin apakah saya bisa menulis sebuah program untuk menyisir pencarian kata yang diberikan dan menghasilkan jawaban. Sebenarnya sangat mudah. Sekarang saya bertanya-tanya seberapa kecil yang bisa kita dapatkan.
Aturan
- Input pertama Anda adalah string atau kumpulan n baris, yang masing-masing panjangnya n karakter
- Input kedua Anda adalah daftar kata-kata dalam format apa pun untuk ditemukan dalam teka-teki
- Semua kata dalam daftar pencarian dijamin berada dalam teka-teki
- Kata-kata dapat diorientasikan dalam salah satu dari empat arah mata angin, serta secara diagonal baik maju dan mundur
- Hanya karakter AZ huruf besar yang akan hadir dalam puzzle
- Kode Anda harus menemukan setiap kata dalam string pencarian, dan menampilkan posisi koordinat huruf awal, di mana 0,0 adalah karakter kiri atas.
- Jika Anda menemukan lebih dari satu contoh kata yang sama, Anda dapat menanganinya sesuka Anda. Keluarkan beberapa kali, atau hanya sekali, terserah Anda
Contoh / Kasus Uji
Diberikan papan berikut:
ABCD
EFGH
IJKL
MNOP
Dan string pencarian berikut:
ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD
Program Anda harus menampilkan yang berikut, dalam urutan apa pun:
ABCD at 0,0
CGKO at 0,2
PONM at 3,3
NJF at 3,1
AFKP at 0,0
CFI at 0,2
LGB at 2,3
MJGD at 3,0
Seperti biasa, jawaban terpendek menang
code-golf
string
word-search
morpen
sumber
sumber
Jawaban:
JavaScript (Node.js) ,
154152150141 bytemengembalikan array lokasi (sebelumnya berupa string dengan baris baru)
Cobalah online!
sumber
Python 2 , 213 byte
Cobalah online!
g
mengambil lokasi awali,j
dan arahu,v
dan melalui rekursi mengekstraksi string yang dimulai di lokasi itu ke arah itu.f
kemudian mengunjungi setiap lokasi awali,j
dan arahU/3-1,U%3-1
dan memeriksa setiap kataw
untuk melihat apakah string yang dihasilkan dimulaiw
.sumber
Python 3 ,
149147 byteCobalah online!
Versi tidak disatukan
Gagasan utamanya adalah
b[i::d]
memilih sepotong dari papan permainan. Irisan dimulai sebagai posisii
dan memanjang ke arahd
. Misalnya,d = h+1
berkorespondensi dengan diagonal tenggara, sedangkand = ~h
, yang sama dengan-h-1
, berkorespondensi dengan diagonal barat laut.[:len(y)]
memotong irisan dengan panjang yang sama dengan kata yang dicari.sumber