Tôi đang tạo một trò chơi từ giống như boggle. Người dùng được cung cấp một mạng lưới các chữ cái như thế này:Thuật toán để chọn các chữ cái ngẫu nhiên cho trò chơi tìm kiếm chữ cho phép nhiều từ được viết chính tả
O V Z W X
S T A C K
Y R F L Q
Người dùng chọn một từ sử dụng bất kỳ chuỗi chữ liền kề nào, như từ "STACK" trên đường giữa. Các chữ cái được sử dụng sau đó được thay thế bằng máy, ví dụ: (các chữ cái mới trong chữ thường):
O V Z W X
z e x o p
Y R F L Q
Lưu ý bây giờ bạn có thể đánh vần "OVeRFLoW" bằng cách sử dụng các chữ cái mới. Vấn đề của tôi là: Tôi có thể sử dụng thuật toán nào để chọn các chữ cái mới tối đa hóa số từ dài mà người dùng có thể đánh vần? Tôi muốn trò chơi trở nên thú vị và liên quan đến chính tả, ví dụ: 6 chữ cái đôi khi nhưng, nếu bạn chọn chữ cái xấu, trò chơi liên quan đến người dùng chỉ cần đánh vần 3 chữ cái và không nhận được cơ hội tìm những từ lớn hơn.
Ví dụ:
Bạn chỉ có thể chọn một cách ngẫu nhiên chữ mới từ bảng chữ cái. Điều này không hoạt động tốt.
Tương tự như vậy, tôi tìm thấy chọn ngẫu nhiên nhưng sử dụng tần số thư từ Scrabble không hoạt động tốt. Điều này hoạt động tốt hơn trong Scrabble Tôi nghĩ rằng khi bạn ít bị ràng buộc về thứ tự bạn sử dụng các chữ cái.
Tôi đã thử một tập hợp danh sách, mỗi danh sách đại diện cho một trong số những người chết từ trò chơi Boggle. chọn từ một mặt chết ngẫu nhiên (tôi cũng tự hỏi liệu tôi có thể sử dụng hợp pháp dữ liệu này trong một sản phẩm) hay không. Tôi đã không nhận thấy điều này làm việc tốt. Tôi tưởng tượng các mặt xúc xắc Boggle đã được chọn theo một cách hợp lý nào đó, nhưng tôi không thể tìm ra cách thức này được thực hiện.
Một số ý tưởng tôi đã xem xét:
Thực hiện một bảng của mức độ thường xuyên cặp thư xuất hiện cùng nhau trong từ điển. Vì lợi ích của lập luận, nói rằng E được nhìn thấy bên cạnh A 30% thời gian. Khi chọn một chữ cái mới, tôi sẽ chọn ngẫu nhiên một chữ cái dựa trên tần số của lá thư này xuất hiện bên cạnh một chữ cái liền kề được chọn ngẫu nhiên trên lưới. Ví dụ: nếu thư bên cạnh là E, chữ cái mới sẽ là "A" 30% thời gian. Có nghĩa là có rất nhiều cặp phong nha để sử dụng rải rác xung quanh bản đồ. Tôi có thể cải thiện điều này bằng cách làm cho các bảng xác suất của một lá thư xuất hiện giữa hai chữ cái khác.
Bằng cách nào đó, tìm kiếm những từ nào có thể được viết trên lưới hiện tại, lấy các chữ cái mới làm ký tự đại diện. Sau đó tôi sẽ thay thế các ký tự đại diện bằng các chữ cái cho phép các từ lớn nhất được viết. Tôi không chắc chắn làm thế nào bạn sẽ làm điều này một cách hiệu quả tuy nhiên.
Bất kỳ ý tưởng nào khác đều được đánh giá cao. Tôi tự hỏi nếu có một cách phổ biến để giải quyết vấn đề này và những trò chơi chữ khác sử dụng.
Chỉnh sửa: Cảm ơn câu trả lời tuyệt vời cho đến nay! Tôi quên đề cập đến, tôi thực sự nhắm đến các yêu cầu bộ nhớ/CPU thấp nếu có thể, tôi có thể sử dụng từ điển SOWPODS (khoảng 250.000) và lưới của tôi sẽ có thể 6 x 6.
Tôi thích ý tưởng của bạn về việc sử dụng xác suất juxtaposition thư. Bạn có thể mở rộng thêm: cho bất kỳ vị trí thư nào, xác định xác suất của mỗi chữ cái liền kề với các chữ cái xung quanh ngay lập tức và trung bình các xác suất này thành một chữ cái duy nhất, sau đó chọn một chữ cái ngẫu nhiên bằng cách sử dụng xác suất trung bình như trọng số. – Cameron