【问题标题】:python - Implementing a gamepython - 实现一个游戏
【发布时间】:2023-05-20 23:45:01
【问题描述】:

这是一个我正在尝试实现的游戏。 一个儿童游戏,他们在选定的类别中命名一个对象(比如动物!) 使得玩家单词的第一个字母与前一个玩家单词的最后一个字母相同。

一个例子是:

  • 玩家 1:长颈鹿
  • 玩家 2:大象
  • 玩家 3:老虎
  • 玩家 4:浣熊

等等!

现在,我想编写一个代码,给出一个单词列表,它会找到最长的单词链。

一个可能的列表:

['giraffe', 'elephant', 'ant', 'tiger', 'raccoon', 'cat', 'hedgehog', 'mouse']

最长的必须是: ['hedgehog', 'giraffe', 'elephant', 'tiger', 'raccoon']

我的代码中的错误是,如果我更改原始列表的顺序,最长的链会不同!!! :(

这是伪代码:

function longest-chain(chain, V , longest) #Recursively return the longest chain in V
    extended = False
    for word in V do
        if chain + word is a legal chain then
            longest = longest-chain(chain + word, V / {word})
            extended = True
    if extended is False then # No word in V could extend chain
        if chain is longer than longest then
            longest = chain
    return longest

(/表示集差算子)

有人可以帮我正确实现它吗? 我不想发布我的代码,因为我想重新开始。

【问题讨论】:

  • "I didn't want to post my code because I wanted to start over." -- 为什么不呢?
  • 周期呢?如果存在rabbit tiger rabbit tiger ... 链会发生什么?
  • 为什么投反对票?除了没有提供信息的标题之外,IMO 的问题还可以。

标签: python


【解决方案1】:

如果你把你的词想象成一个图的顶点,那么这个图的边就在可以连接在一起的词之间。

                                    cat
                                       \
                   giraffe - elephant - tiger - raccoon
                 /          /          /
         hedgehog      mouse        ant

然后,您尝试在有向和潜在循环图中找到最长的路径。它可以有多个正确的解决方案。可能适用于足够小的集合的蛮力方法是枚举所有可能的路径并选择最长的路径之一。这可以通过动态编程进行优化,动态编程是缓存已计算部分的一个花哨名称。

【讨论】: