Game Ghost dimainkan antara dua pemain yang bergantian mengucapkan huruf pada setiap belokan. Pada setiap titik, surat-surat sejauh ini harus memulai beberapa kata bahasa Inggris yang valid. Yang kalah adalah pemain untuk menyelesaikan satu kata penuh terlebih dahulu. Jadi, misalnya, jika surat-surat sejauh ini adalah EAGL, maka satu-satunya surat berikutnya yang valid untuk mengatakan adalah "E" dan pemain berikutnya akan kalah. (Meskipun ada kata-kata yang lebih panjang seperti "elang".)
Tantangan
Anda harus menulis program atau fungsi untuk menentukan, mengingat surat-surat sejauh ini, siapa yang akan menang dengan asumsi dua pemain sempurna. Input adalah string yang mewakili kondisi permainan saat ini, dan daftar string yang mewakili kamus kata-kata yang valid. Keluaran harus membedakan apakah pemain berikutnya yang akan menang atau kalah.
Detail
- Kode harus menangani kasus di mana keadaan saat ini kosong. Namun, Anda mungkin menganggap tidak ada kata dalam kamus yang kosong.
- Anda dapat mengasumsikan bahwa setiap string input hanya terdiri dari huruf ASCII huruf kecil, yaitu az.
- Anda dapat mengasumsikan keadaan saat ini dan semua kata dalam kamus masing-masing memiliki maksimal 80 karakter.
- Kamus dijamin tidak kosong (untuk menghindari kasus di mana tidak ada langkah pertama yang valid).
- Anda dapat menganggap "kondisi saat ini" akan valid: harus ada beberapa kata yang dimulai dengan kondisi saat ini; juga, kondisi saat ini tidak akan menjadi kata penuh, atau awalan dari kondisi saat ini tidak akan menjadi kata penuh.
- Kamus akan difilter sesuai dengan aturan "kata-kata bahasa Inggris" dianggap valid untuk permainan - jadi misalnya, untuk varian di mana kata-kata dari tiga atau lebih sedikit huruf belum mengakhiri permainan, kamus akan prefiltered untuk memasukkan hanya kata-kata dari empat huruf atau lebih.
- Anda dapat menganggap kamus akan didahului.
Contohnya
Misalkan kamus adalah:
abbot
eager
eagle
eaglet
earful
earring
Kemudian untuk kondisi saat ini, output harus sebagai berikut:
Current state Result
============= ======
loss
a win
eag win
eagl loss
ear win
earf win
earr loss
Demikian juga, untuk daftar kata di https://raw.githubusercontent.com/dschepler/ghost-word-list/master/wordlist.txt (dibuat menggunakan sistem Debian pcregrep '^[a-z]{4,80}$' /usr/share/dict/american-english
) berikut ini adalah sesi yang memungkinkan:
Current state Result
============= ======
win
h loss
ho win
hoa loss
hoar win
hoars loss
(Dan kemudian langkah selanjutnya melengkapi "serak".)
Mencetak gol
Ini adalah kode-golf : Program terpendek dalam byte untuk setiap bahasa pemrograman yang menang.
sumber
Jawaban:
JavaScript, 54 byte
sebut saja seperti ini: f (wordlist_as_array) (current_word_as_string), itu mengembalikan true untuk win, false untuk kalah.
kinerja T_T sangat buruk, hanya bekerja dengan test case kecil.
Tampilkan cuplikan kode
sumber
Python 3 ,
13512984 byte-4 byte terima kasih kepada Tn. Xcoder !
-42 byte terima kasih kepada Daniel Schepler !
Cobalah online!
A
1
menunjukkan pemain saat ini akan menang, sedangkan a-1
menunjukkan mereka akan kalah.sumber
lambda
.PHP,
192 154 10098 bytepengembalian fungsi
1
untuk menang,NULL
untuk kerugian.Hubungi dengan
t(string $word,array $dictionary)
atau coba online .kerusakan
sumber
C ++, 243 byte (tidak kompetitif)
FYI, inilah versi golf dari implementasi referensi saya (ditandai sebagai tidak kompetitif karena ini adalah tantangan saya sendiri). Itu mengharapkan daftar kata dalam
w
parameter menjadi array yang diakhiri dengan nol (dari string yang diakhiri dengan nol). Ia kembali1
jika pemain berikutnya akan kalah, atau0
jika pemain berikutnya akan menang.Cobalah online.
Versi yang diperluas dan dikomentari:
sumber