【问题标题】:Stack to save position堆叠以保存位置
【发布时间】:2017-08-28 22:53:05
【问题描述】:

我正在用 Python 为秘鲁语开发一个拼写检查器。

当真正的单词是“tsonti”时,我的单词“tponti”是错误的。我的想法是复习这个词并尝试形成不同的可能选项。

例如:

当你在“p”位置并检查它前面的字母是“t”时,有一个错误,所以选项是:

  • 删除“p”
  • 用人声改变“p”
  • 在“p”和“o”之间改变位置。

我试图使用堆栈来保存位置、要遵循的路径类型(-1 删除,0 随人声改变,1 改变位置)和形成的单词。因为我到达了单词的最后一个位置,所以我可以返回到最后保存的位置并遵循另一条路径。 如果你需要真实的代码:

输入以在https://drive.google.com/file/d/0B9TJF4xuMuwdVXdwcFFnT0J1aTg/view?usp=sharing 中获取 pgrafo.py,它位于 gdrive 中。 输入https://drive.google.com/file/d/0B9TJF4xuMuwddmtvSEp1MENGNEk/view?usp=sharing获取grafo2.xlsx,它在gdrive中。

enter code here
word = "tponti"
pos = 0
formed = ""
typoe = -1
stackPos = []
stackFormed = []
stackType = []
while(pos < len(word)):
    formed = formed + word[pos]
    if detecError(formed[-1],word[pos]):
        if type == -1:
            stackPos.append(pos)
            stackFormed.append(formed)
            stackType(0)
        if type == 0:
            #changeLetters
            stackPos.append(pos)
            stackFormed.append(formed)
            stackType(1)
        if type == 1:
            stackPos.append(pos)
            stackFormed.append(formed)
            stackType(-1) #to star in -1 in case there's a mistake later
        if pos == len(word) and len(stackPos) > 0:
            savePosibleFormed(formed)
            pos= stackPos.pop()
            formed= stackFormed.pop()
            type = stackType.pop()
            pos -= 1
    pos += 1

【问题讨论】:

  • 它给了我一个无限循环。
  • 请显示调试跟踪 -- 至少是战略性放置的 print 语句的输出。请参阅这个可爱的 debug 博客寻求帮助。
  • 如果您想尝试,我将链接添加到我的代码中
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。

标签: python stack position


【解决方案1】:

我强烈建议您使用递归例程来执行此操作:让运行时系统维护您的堆栈。将此视为通过有向图的搜索,寻找解决方案的最低成本路径(即 Dijkstra 算法)。每个变化都是一条边,从一个图形节点(拼写)到另一个节点的移动。

这足以让你感动吗?

【讨论】:

  • 它给了我一个无限循环。
  • 此评论是指您对我的建议的实施,还是原始问题?如果是针对原问题,请删除此评论。
  • 如果您想尝试,我会将链接添加到我的代码中。我以前尝试使用 Dijkstra,但我需要所有可能的单词。
猜你喜欢
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2011-11-30
相关资源
最近更新 更多