Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 是否存在可以解决Vim高尔夫问题的算法_Algorithm_Vim_Computer Science_Halting Problem_Computability - Fatal编程技术网

Algorithm 是否存在可以解决Vim高尔夫问题的算法

Algorithm 是否存在可以解决Vim高尔夫问题的算法,algorithm,vim,computer-science,halting-problem,computability,Algorithm,Vim,Computer Science,Halting Problem,Computability,有可能创建一个算法来解决Vim高尔夫问题吗?对于那些不熟悉这是什么的人,您将获得两个不同的文本块,并且必须使用尽可能少的击键次数(在规范示例中使用Vim,或者您选择使用的任何文本编辑程序)将第一个文本块转换为第二个文本块。我最初的怀疑是答案是否定的;我们知道所需文本更改数量的上限-手动删除差异并输入正确的文本。然而,精确到最小数量更为复杂-文本编辑器可以编写强大的宏来执行任务,你可以有多个宏的组合-我猜可能有某种方法可以显示与停止问题的对应关系,但我不太确定细节。编辑:正如Woutfwas指出的

有可能创建一个算法来解决Vim高尔夫问题吗?对于那些不熟悉这是什么的人,您将获得两个不同的文本块,并且必须使用尽可能少的击键次数(在规范示例中使用Vim,或者您选择使用的任何文本编辑程序)将第一个文本块转换为第二个文本块。我最初的怀疑是答案是否定的;我们知道所需文本更改数量的上限-手动删除差异并输入正确的文本。然而,精确到最小数量更为复杂-文本编辑器可以编写强大的宏来执行任务,你可以有多个宏的组合-我猜可能有某种方法可以显示与停止问题的对应关系,但我不太确定细节。

编辑:正如Woutfwas指出的,VIM宏是,所以这个问题很可能是不可判定的,因此你的问题的答案是否定的。我下面的答案是错误的,因为它假设我们可以在有限的时间内决定VIM中给定的击键序列是否终止,事实并非如此

旧答案
这当然不是不确定的,因为你可以尝试所有可能的击键序列,直到找到答案。长度有一个上限,因为您可以删除一个,然后插入另一个。即使有一个NP难问题的简化,你也可以得到一个很好的近似值。如果一个人能做到这一点,计算机应该能做得更好

那么它可行吗?可能吧,但这似乎是个棘手的问题


为什么??因为许多非平凡的问题,如编辑距离、字符串分解和无数压缩算法似乎都归结为Vim问题。人类可以为所有这些问题找到解决方案,并创造性地将它们结合起来,从而得出解决方案。

怎么样:
CTRL-A CTRL-C CTRL-TAB CTRL-A CTRL-V
。在所有可能的情况下击键5次。除非您将CTRL也算作一个键笔划。。。jadda,jadda,这当然不是不确定的,因为你可以尝试所有可能的击键序列,直到找到答案。长度有一个上限,因为您可以删除一个,然后插入另一个。即使有一个NP难问题的简化,你也可以得到一个很好的近似值。如果一个人能做到这一点,计算机应该能做得更好。那么它可行吗?可能吧,但这似乎是个棘手的问题。许多非琐碎的问题,如编辑距离和字符串分解,似乎都归结为Vim问题。Niklas说得通。除了我上面的一般解决方案外,我觉得这是一个格式错误的问题。编辑器本身并没有描述一组简洁的可用操作。因此,任何人都可以发明“魔术1键宏”来解决这个问题。@BitTicker为了解决这个问题,假设没有预定义的宏存在——为了解决这个问题,在编写宏时,它会计入你的笔划。你不能只是“尝试所有可能的击键序列”。由于宏的存在,无法在有限的时间内模拟一组击键(在vim中,宏可以递归地相互调用,甚至自己调用)。我怀疑正确答案是否定的。我的本能是尝试模拟滑雪演算。递归vim宏在搜索失败时中断,因此您可以想象如何实现外部循环。@Wuthef有趣的是,当我编写tgis答案时,我不知道vim宏是图灵完成的。在这种情况下,问题甚至可能无法确定。让我们看看我是否可以更新answerAny算法,该算法评估解决方案的候选路径,如果省略长度(以击键方式)大于当前最已知路径的任何路径,则效果会更好。这严重限制了搜索空间,我认为你可以排除那些需要你解决图灵机器停止问题的路径。