Trò chơi Ghost được chơi giữa hai người chơi thay phiên nhau nói một chữ cái trên mỗi lượt. Tại mỗi điểm, các chữ cái cho đến nay phải bắt đầu một số từ tiếng Anh hợp lệ. Người thua cuộc là người chơi hoàn thành một từ đầy đủ trước. Vì vậy, ví dụ, nếu các chữ cái cho đến nay là EAGL, thì chữ cái tiếp theo hợp lệ duy nhất để nói là "E" và do đó người chơi tiếp theo sẽ mất. (Mặc dù có những từ dài hơn như "eaglet".)
Các thách thức
Bạn phải viết một chương trình hoặc chức năng để xác định, đưa ra các chữ cái cho đến nay, ai sẽ giành chiến thắng với giả định hai người chơi hoàn hảo. Đầu vào là một chuỗi đại diện cho trạng thái hiện tại của trò chơi và một danh sách các chuỗi đại diện cho từ điển của các từ hợp lệ. Đầu ra nên phân biệt người chơi tiếp theo sẽ thắng hay thua.
Chi tiết
- Mã phải xử lý trường hợp trạng thái hiện tại trống. Tuy nhiên, bạn có thể cho rằng không có từ nào trong từ điển trống.
- Bạn có thể giả sử rằng mỗi chuỗi đầu vào chỉ bao gồm các chữ cái ASCII viết thường, tức là az.
- Bạn có thể giả sử trạng thái hiện tại và tất cả các từ trong từ điển có tối đa 80 ký tự mỗi từ.
- Từ điển được đảm bảo là không trống (để tránh trường hợp không có động thái đầu tiên hợp lệ).
- Bạn có thể cho rằng "trạng thái hiện tại" sẽ hợp lệ: nhất thiết phải có một số từ bắt đầu bằng trạng thái hiện tại; Ngoài ra, trạng thái hiện tại sẽ không phải là một từ đầy đủ, cũng không có bất kỳ tiền tố nào của trạng thái hiện tại là một từ đầy đủ.
- Từ điển sẽ được lọc trước theo các quy tắc trong đó "từ tiếng Anh" được coi là hợp lệ cho trò chơi - vì vậy, ví dụ, đối với một biến thể trong đó các từ có ba chữ cái trở xuống chưa kết thúc trò chơi, từ điển sẽ được lọc trước chỉ bao gồm các từ có bốn chữ cái trở lên.
- Bạn có thể cho rằng từ điển sẽ được định sẵn.
Ví dụ
Giả sử từ điển là:
abbot
eager
eagle
eaglet
earful
earring
Sau đó, cho các trạng thái hiện tại sau đây, đầu ra nên như sau:
Current state Result
============= ======
loss
a win
eag win
eagl loss
ear win
earf win
earr loss
Tương tự, đối với danh sách từ tại https://raw.githubusercontent.com/dschepler/ghost-word-list/master/wordlist.txt (được sản xuất trên hệ thống Debian bằng cách sử dụng pcregrep '^[a-z]{4,80}$' /usr/share/dict/american-english
) ở đây là một phiên có thể:
Current state Result
============= ======
win
h loss
ho win
hoa loss
hoar win
hoars loss
(Và sau đó bước tiếp theo hoàn thành "khàn".)
Chấm điểm
Đây là code-golf : Chương trình ngắn nhất tính theo byte cho mỗi ngôn ngữ lập trình sẽ thắng.