标签: scrabble

算法:哪组长度为 N 的图块可用于生成最多数量的 Scrabble 有效单词?

我正在尝试创建一个函数best_tiles,该函数接收您手中的瓷砖数量并返回一组瓷砖,它允许您生成最多数量的唯一英语有效单词,假设您只能使用每个瓷砖一次。

例如,您手中的这组牌(A, B, C)可以拼出 CAB、BAC、AB 和 BA(所有这些都是英文单词),因此您可以用该组拼写 4 个独特的单词。使用(B, A, A),您可以拼出 5 个单词:ABA、BAA、AA、AB 和 BA。目标是找到一组字母,使您可以拼出最多数量的英语有效单词(无需替换)。

因此,如果 5 是 N = 3 的任意字母组合可以拼写的最大单词数,则运行best_tiles( n = 3 )将返回B, A, A.

我想知道如何有效地实现这一点?我目前的方法在字母数量方面根本不能很好地扩展。

我读了一个词表。在这种情况下,我在这里使用 enable.txt:https ://www.wordgamedictionary.com/enable/

import os
path = "enable.txt"
words = []
with open(path , encoding='utf8') as f: 
    for values in f:
        words.append(list(values.strip().upper()))
Run Code Online (Sandbox Code Playgroud)

我创建了一个函数word_in_tilesh/t smack89 ,它返回是否有可能在给定瓷砖集的情况下构造一个单词:

def word_in_tiles(word, tiles):
  tiles_counter = collections.Counter(tiles)
  return all(tiles_counter.get(ch, 0) == cnt for ch,cnt …
Run Code Online (Sandbox Code Playgroud)

python algorithm scrabble

8
推荐指数
1
解决办法
509
查看次数

标签 统计

algorithm ×1

python ×1

scrabble ×1