Data structures 什么样的数据结构可以在命运之轮中维护候选词?

Data structures 什么样的数据结构可以在命运之轮中维护候选词?,data-structures,Data Structures,《命运之轮》的背景:在《命运之轮》游戏中,玩家最初看到的是一组空格,代表隐藏着字母的单词。(因此,玩家知道每个单词的长度,但不知道单词包含哪些字母。)随着游戏的进行,玩家猜测字母;如果短语包含该字母,则会显示该字母在短语中的所有位置。例如,一个游戏(带有隐藏短语“堆栈溢出”)最初将表示为????????,猜出字母“o”后,游戏将显示?????哦 为了简单起见,让我们假设我们的游戏只包含一个隐藏的单词。我将使用什么数据结构来保存该单词的所有可能候选项?(我正在玩一个AI,它会选择下一个要猜的字母,

《命运之轮》的背景:在《命运之轮》游戏中,玩家最初看到的是一组空格,代表隐藏着字母的单词。(因此,玩家知道每个单词的长度,但不知道单词包含哪些字母。)随着游戏的进行,玩家猜测字母;如果短语包含该字母,则会显示该字母在短语中的所有位置。例如,一个游戏(带有隐藏短语“堆栈溢出”)最初将表示为????????,猜出字母“o”后,游戏将显示?????哦

为了简单起见,让我们假设我们的游戏只包含一个隐藏的单词。我将使用什么数据结构来保存该单词的所有可能候选项?(我正在玩一个AI,它会选择下一个要猜的字母,所以为了做出选择,我希望能够计算出统计数据,比如剩余候选字母中最常见的字母。)说清楚一点,一开始我知道我的单词包含N个字母,然后我学习单词中各个字母的位置,以及单词不包含的字母


这里有一个类似的问题,但我认为这个问题有点不同,因为我有两个以上的空格,我也在迭代地删减我的候选列表(而这个问题似乎只使用一次搜索)。我目前的想法是只维护一个候选单词列表,初始化为所有英语单词(最多应该有300k-500k个单词),然后(采用与该问题类似的方法)使用正则表达式迭代删减该候选单词列表,因为我猜到了更多的字母,但我很好奇是否有更好的数据结构或算法。

您应该先根据大小拆分单词。在每种尺寸中,a似乎都是一个良好的开端。您可以一次修剪整个子树,只需在每个节点上翻转一个标志,就可以保持trie的正常运行,无论当前游戏中是否考虑不到根在该节点上的子树。

是否应该启用此选项?