我正在尝试创建一个函数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)