Questions tagged «halting-problem»

30
从较小的“ H”创建一个“ H”
挑战 创建一个函数或程序,当给定整数时size,该函数或程序将执行以下操作: 如果size等于1,则输出 H H HHH H H 如果size大于1,则输出 X X XXX X X X程序/功能的输出在哪里size - 1 (只要您愿意,0只要您在答案中指定,就可以使基本情况与相对应) 可以使用以下任何一种输出格式,以您更方便的方式: 所需结构的字符串,其中任意两个不同的字符分别对应于H和space 具有所需结构的二维数组,其中任意两个不同的值分别对应于H和space 字符串的数组/列表,每个字符串中有一行输出,并且与H和对应的任意两个不同的值space 只要每行上有恒定数量的前导空格,就可以使用前导空格。两个不同的输出字符可以取决于您选择的任何内容,只要它们不同即可。 指定代码返回的输出格式。 测试用例 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

15
这台Foo机器会停止吗?
众所周知,确定Turing机器是否停止运行还不确定,但是对于较简单的机器而言并不一定如此。 甲富机是一台具有有限带,其中在磁带上的每个小区具有整数或halt符号h,例如 2 h 1 -1 指令指针从指向第一个单元格开始: 2 h 1 -1 ^ 在每一步中,指令指针都向前移动其指向的数字,然后取反该数字。因此,经过一步,它将向前移动2单元格,并将其2变为-2: -2 h 1 -1 ^ Foo机器会继续执行此操作,直到指令指针指向暂停符号(h)。因此,这是该程序的完整执行: 2 h 1 -1 ^ -2 h 1 -1 ^ -2 h -1 -1 ^ -2 h -1 1 ^ -2 h 1 1 ^ 磁带也是圆形的,因此,如果指令指针从磁带的一侧移开,它将移到另一侧,例如: 3 h 1 3 ^ …

1
混淆了我解决暂停问题的尝试
请注意:从本质上讲,此挑战的规范很难理解。它可能至少需要一门有关可计算性理论的新生课程,或者具有同等背景的阅读知识。此外,挑战本身也相当艰巨。要回答该问题,就需要为所选语言的某些子集编写一个完整的口译员,不仅如此,而且口译员也必须采用像奎奴纳这样的形式。如果您的答案不能满足所有要求,则可以肯定不符合规范。 您无需解决暂停问题(甚至部分解决)即可解决此挑战。但是,你几乎可以肯定做必要写(您使用写在上面解释同一种语言的语言,)一个解释,虽然它不一定是功能齐全。正是这个使这成为一个有趣的挑战。 我答应为符合规范的第一个答案奖励500点奖励,这将奖励给Jo King的BF答案。 挑战 Alan Turing关于停止问题无法解决的证明的粗略简化版本如下所示: 假设我已经编写了一个程序F来解决暂停程序。即,F将另一个程序的源代码作为输入,如果停止F(G)则返回,否则返回。1G0 但是,如果我给您我的程序,F那么您可以构建另一个程序H,它以我的程序H作为输入来运行。如果F(H)return,0则H返回0,但否则故意进入无限循环。这导致了一个悖论,我们必须得出结论,F毕竟这不能解决暂停问题。 您的任务是编写程序H,但要有所不同:我不会给您我的程序。相反,您的程序将接收我程序的源代码作为输入。那是: 您的程序将以源代码形式接收我的程序作为输入。(例如,作为文件还是作为命令行输入,详细信息取决于您。) 我的程序将使用与您的程序相同的语言编写,并且还将以源代码字符串的形式接受输入。 如果我的程序返回0给定当你的程序作为输入,你的程序应该停止(和返回0)时给予我的程序作为输入。(“重现0” 的确切含义取决于您。) 如果我的程序没有停止,或者返回除0给定程序作为输入时以外的其他任何内容,则程序应无限期运行。 唯一的困难就是,要使其变得更加困难,就必须遵守以下规则: 您不能使用任何内置函数exec或eval-type函数。 您不能使用任何“作弊”方法来获取自己程序的源代码。(例如,您不能说“将其保存在名为'程序'的文件中”,然后再包含open(program)在您的程序中。) 这意味着您的程序必须是某种疯狂的超级字符串,它们不仅可以以字符串的形式重现其自身的源代码,而且还能够正确地解析和解释其编写的语言。 为了使它的疯狂程度有所减轻,只允许使用所选语言的一部分(图灵完成)。因此,如果您的程序是用Python编写的,并且仅在我的程序仅包含ifs和while循环以及基本的字符串操作时才可以运行,那么只要您的程序也仅使用这些内容就可以了。(这意味着您不必担心实现所选语言的整个标准库!)但是,您的程序确实必须运行-您不能只编写自己的语言。 这是一场人气竞赛,因此得票最多的答案将获胜。但是,如上所述,要完全满足规范要求是一个严峻的挑战,因此,根据我的判断,我将对第一个回答给予500点奖励。 请注意:毫无疑问,鉴于我使用的确切措辞,您可以通过多种方式“应对”这一挑战。但是,我真的很希望能找到能使问题变得实质的答案。预期的挑战非常艰巨,但有可能实现,我真的希望看到真正的解决方案。我不会将悬赏奖励给在我的判断中感到作弊的答案。 注意:此挑战最初是作为人气竞赛发布的,但由于没有“客观的获胜标准”,于2016年关闭,为了将其重新开放,我将其更改为Code-Golf。但是,我发现,截至2018年1月,PPCG实际上并未禁止进行流行度竞赛(这是最新的元讨论),因此首先将其关闭是违反网站政策的。我知道popcons如今并不流行,但这是一个古老的挑战,它的性质使其确实不适用于代码高尔夫球计分系统。如果仍然有人强烈认为不应该这样做,那么让我们进行一次元讨论,然后再开始进行密切投票。最后,在有人花了最后一年尝试解决方案的机会之外,请放心,它在这项挑战中将具有竞争力,并且像在代码高尔夫球中一样值得悬赏版。

11
解决Befinge的暂停问题
让我们定义一种简单的2D语言,我们将使用难以置信的原始名称befinge。Befinge有5条指令: <>^v与大多数2D esolang中一样,将指令指针重定向到各自的方向。 . 是无人操作。 指令指针从右上角的左上角开始。如果指令指针到达边缘,程序将暂停。每个Befinge程序显然都将停止或进入无能为力的无限循环。这是两个示例: 停止: >.v ..< 非停止: >....v ..v..< ..>v.. ^..<.. 对于图灵完备的语言来说,停止问题无法解决,但对于这种语言来说,却是可以解决的。您的任务是编写一个程序(或函数),该程序将代表befinge程序的字符串作为输入,并根据是否停止而返回true或false值。 您可以假设输入将仅包含这些字符,并用空格填充以形成一个矩形。 您可以使用任意五个字符的集合作为说明(例如adws )。 测试用例 停止: . v> >^ ....v.... ....>...v .^..<.... .......v< .......v. ....^..<. v<>v>v^ >v^>^>v <>>^v<v v^<>v^< 非停止: >..v ^..< >v< v<. >v. v<. >.^ >.>.>.v .><.<.< 这是代码高尔夫球,因此最短的程序(以字节为单位)获胜。

14
这是一个截断的三角形数字吗?
相关OEIS序列:A008867 截断三角数 三角数的一个共同属性是它们可以排列成三角形。例如,取21并排列成os 的三角形: Ø OO oo oo oo oo 让我们定义一个“截断:”从每个角切割相同大小的三角形。截断21的一种方法如下: 。 。。 oo oo 。oo。 。。哦。。 (的三角形.是从原始三角形切出的)。 o剩下12 秒,因此12是一个截断的三角形数字。 任务 您的工作是编写一个程序或函数(或等效函数),该程序或函数采用整数并返回(或使用任何标准输出方法)数字是否为截断的三角形数字。 规则 没有标准漏洞。 输入是非负整数。 切口的边长不能超过原始三角形的一半(即,切口不能重叠) 切口的边长可以为零。 测试用例 真相: 0 1 3 6 7 10 12 15 18 19 虚假: 2 4 5 8 9 11 13 14 16 17 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

27
为*写翻译
任务很简单。为*语言编写口译员。 这是Wiki的更大链接。 只有三个有效的*程序: * 打印“ Hello World” * 打印0到2,147,483,647之间的随机数 *+* 永远运行。 根据此问题的规范,第三种情况必须是无限循环 输入: 可以通过我们的标准I / O规则通过任何可接受的输入方法进行输入 它将永远是以上程序之一 输出: 第一种情况应打印准确Hello World,带有或不带有尾行。 对于第二种情况,如果您的语言的整数最大值小于2,147,483,647,请使用您的语言的整数最大值 根据我们的标准I / O规则,第一种情况和第二种情况可以打印到任何可接受的输出。 第三种情况不应给出任何输出。 得分: 因为这是代码高尔夫球,所以最短的答案(以字节为单位)获胜。
20 code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

2
数论解释器,模n
一个句子数论(我们的目的)的是下列符号序列: 0和'(后继) -后继手段+1,所以0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加法)和*(乘法) = (等于) (和)(括号) 逻辑运算符nand(a nand b是not (a and b)) forall (通用量词) v0,v1,v2等。(变量) 这是一个句子的示例: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) 这not x是简写x nand x-实际的句子会用到(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

2
解决模块化SNISP的暂停问题
本着为Befinge解决停机问题的精神,让我们定义另一种称为Modilar SNISP的 2D语言。Modilar SNISP具有以下六个指令: \ 指令指令指针如下: 如果从顶部接近,请向右走; 如果从右边靠近,则往上走; 如果从底部接近,则向左走; 如果从左侧接近,则向下走。 / 指令指令指针如下: 如果从顶部接近,则向左走; 如果从左侧接近,则上升; 如果从底部接近,请向右走; 如果从右边靠近,则往下走。 ! 跳过下一条指令。 @ 将IP位置和方向推送到调用堆栈中。 #从调用堆栈中弹出IP位置和方向并进行恢复,然后跳过下一条指令。如果调用堆栈为空,则执行停止。 . 什么也没做。 指令指针从右上角的左上角开始。如果它离开了运动场,执行将停止。 模块化SNISP不能比PDA强大,因为它的唯一无限存储源是带有有限字母(所有IP(位置,方向)对的集合)的堆栈(调用堆栈)。暂停问题对于PDA来说是可以决定的,因此这一挑战应该总是可能的。 挑战 您的目标是编写一个程序,该程序使用代表Modilar SNISP程序的字符矩阵,并根据是否停止而返回两个不同的输出之一。 这是代码高尔夫球,因此最短的有效程序(以字节为单位)获胜。 技术指标 字符矩阵的处理方式很灵活:可以使用换行符分隔的字符串,字符串数组,字符数组,二维字符数组,带整数表示宽度的扁平字符数组等。测试用例选择其中的第一个。 您可以假设输入矩阵将是矩形的(因此您不必填充短行)并且长度和宽度将为非零。 您可以选择任意两个不同的输出,而不仅仅是真/假。 你可以假设输入矩阵将只包含有效的命令(\,/,!,@,#,和.)。 当说一条命令“跳过下一条指令”时,您可以假定将要跳过下一条指令。特别是,在以下情况下将永远不会遇到它:(1)它位于运动场的边缘,并且(2)IP垂直于该边缘移动,以使IP之后的“下一条指令”位于运动场之外。 测试用例 以下代码段可用于测试使用该语言的程序。请注意,它比此处给出的实际规范稍微宽松一些(例如,它允许使用.非禁忌字符)。 function htmlEscape(t){let i=document.createElement("span");return i.innerText=t,i.innerHTML}function tick(){snisp.tick(),snisp.update()}function run(){runButton.style.display="none",stopButton.style.display="",code.style.display="none",executionArea.style.display="",snisp.initialize(),intervalId=setInterval(tick,INTERVAL_MS)}function stop(){runButton.style.display="",stopButton.style.display="none",code.style.display="",executionArea.style.display="none",clearInterval(intervalId)}let TICKS_PER_SECOND=5,INTERVAL_MS=1e3/TICKS_PER_SECOND,runButton=document.getElementById("run-button"),stopButton=document.getElementById("stop-button"),code=document.getElementById("code"),executionArea=document.getElementById("execution-display"),intervalId,snisp={x:null,y:null,direction:null,callStack:null,stopped:null,playfield:null,padRows:function(){let t=Math.max(...this.playfield.map(t=>t.length));for(let i=0;i<this.playfield.length;i++)this.playfield[i]=this.playfield[i].padEnd(t,".")},initialize:function(){this.x=0,this.y=0,this.direction="right",this.callStack=[],this.stopped=!1,this.playfield=code.value.split("\n"),this.padRows(),this.update()},getCurrentChar:function(){let t=this.playfield[this.y];if(void 0!=t)return t[this.x]},backslashMirror:function(){let …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.