是否有可能创建一个算法来解决Vim-golf问题?对于那些不熟悉它的人,你会得到两个不同的文本块,并且必须使用尽可能少的击键次数将第一个块转换为第二个块(在规范示例中使用Vim,或者您选择的任何文本编辑程序)使用)。我最初的怀疑是答案是否定的;我们知道所需文本更改数量的上限 - 手动删除差异并输入正确的文本。但是,降低到最小量是更复杂的 - 文本编辑器可以编写功能强大的宏来执行任务,并且您可以拥有多个宏的组合 - 我猜测可能有某种方式来显示与暂停问题的对应关系但我不太清楚细节。
答案 0 :(得分:3)
编辑:正如WuTheFWas所指出的那样,VIM宏是turing complete,所以问题很可能是不可判定的,因此你的问题的答案是否定的。我下面的答案是错误的原因是因为它假设我们可以在有限的时间内决定VIM中给定的击键序列是否终止,但事实并非如此。
它当然不是不可判断的,因为你可以尝试所有可能的按键序列,直到你找到答案。长度有一个上限,因为你可以删除一个并插入另一个。即使有一些NP难问题的减少,你也可能有一个很好的近似值。如果人类可以做到这一点,计算机应该能够做得更好。
它可行吗?可能,但这似乎是一个棘手的问题。
为什么呢?因为许多非平凡的问题,如编辑距离,字符串分解和无数压缩算法似乎减少到Vim问题。人类可以为所有这些问题采取解决方案,并创造性地将它们结合起来以达成解决方案。