タグ付けされた質問 「halting-problem」

30
小さな「H」から「H」を作成する
チャレンジ 整数を指定するとsize、次のことを行う関数またはプログラムを作成します。 size1に等しい場合、出力 H H HHH H H 場合はsize1、出力よりも大きく、 X X XXX X X どこXのプログラム/関数の出力size - 1 (必要に応じて0、回答で指定する限り、ベースケースをに対応させることができます) 次の出力形式のいずれかが受け入れられますが、どちらがより便利です。 任意の二つの異なる文字に対応する必要な構造の文字列Hとspace 対応する任意の二つの別個の値を要求される構造を有する二次元アレイ、H及びspace 任意の二つの別個の値は、対応する各列における出力の一つの行と列/文字列のリスト、Hおよびspace 各行に一定量の先行スペースがある限り、先行スペースを使用できます。2つの異なる出力文字は、異なる限り、選択したものに依存します。 コードが返す出力形式を指定します。 テストケース 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マシンは停止しますか?
チューリングマシンが停止するかどうかを判断することは、決定できないことがよく知られていますが、それは単純なマシンでは必ずしも当てはまりません。 Fooのマシンは、テープ上の各セルは整数または停止シンボルがある有限のテープ、と機械でh、例えば 2 h 1 -1 命令ポインターは、最初のセルを指すことから始まります。 2 h 1 -1 ^ すべてのステップで、命令ポインターはそれが指す数値だけ前方に移動し、その数値を無効にします。したがって、1つのステップの後、2セルを前方に移動2し、aに変換し-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ポイントの報奨金を授与することを約束しました。これは、ジョー・キングのBF回答に授与されます。 チャレンジ 停止問題の解決不可能性のアランチューリングの証明の大まかな簡略版は、次のようになります。 F停止しているプログラムを解決するためのプログラムを書いたとします。つまりF、別のプログラムのソースコードを入力として受け取り、停止F(G)した1場合に戻りG、0そうでない場合に戻ります。 しかし、プログラムを提供すると、入力としてプログラムを実行するF別のプログラムを作成できます。場合戻り、その後を返し、そうでなければ、それは意図的に無限ループに入ります。これは逆説につながり、結局停止問題を解決できないと結論付けなければなりません。HHF(H)0H0F あなたの仕事はプログラムを書くHことですが、ひねりを加えて:私はあなたに私のプログラムを提供するつもりはありません。代わりに、プログラムは入力としてプログラムのソースコードを受け取ります。あれは: あなたのプログラムは、私のプログラムをソースコード形式で入力として受け取ります。(たとえば、ファイルまたはコマンドライン入力として、詳細はあなた次第です。) 私のプログラムはあなたのプログラムと同じ言語で書かれ、ソースコード文字列の形式で入力を受け取ります。 場合は私のプログラムのリターンが0与えられたとき、あなたのプログラムを入力として、あなたのプログラムが停止(と返す必要があります0与えられたときに)私のプログラムを入力として。(「リテーリング0」の正確な意味はあなた次第です。) 私のプログラムが停止しない場合、または0プログラムが入力として与えられた場合以外の何かを返す場合、プログラムは無期限に実行し続ける必要があります。 ひねりは、それを本当にかなり難しくするために、次の規則に従う必要があるということです: いかなる種類の組み込み関数execまたはeval-type関数も使用できません。 独自のプログラムのソースコードを取得するために、「チート」メソッドを使用することはできません。(たとえば、「これを「プログラム」というファイルに保存する」と言ってopen(program)から、プログラムに入れることはできません。) これは、プログラムが文字列の形式で独自のソースコードを再現できるだけでなく、記述された言語を正しく解析および解釈できる、ある種のクレイジーなスーパークインでなければならないことを意味します。 非常に難しいことを少し減らすために、選択した言語の(チューリング完全な)サブセットのみを使用することができます。あなたのプログラムがPythonで書かれていて、私のプログラムにifsとwhileループと基本的な文字列操作しか含まれていない場合にのみ機能するのであれば、あなたのプログラムもこれらのものだけを使用していれば問題ありません。(つまり、選択した言語の標準ライブラリ全体の実装について心配する必要はありません!)ただし、プログラムを実際に実行する必要があります-独自の言語を作成することはできません。 これは人気コンテストなので、投票数が最も多い答えが勝ちます。ただし、上記のように、仕様を満たすことは非常に難しい課題であるため、私の判断に従って、最初の回答に対して500ポイントの賞金を授与します。 注意してください:私が使用した正確な言葉遣いを考えると、間違いなくこの挑戦​​で「だます」ことができる多くの方法があります。しかし、質問の精神に入る答えを本当に望んでいます。意図したとおりの挑戦は非常に難しいが可能ですが、私は本当にそれに対する真の解決策を期待しています。私の判断でチートな感じがする答えには賞金を授与しません。 注:このチャレンジは元々、popular-contestとして投稿されましたが、「客観的な勝利基準」がないため2016年に終了し、再開するためにコードゴルフに変更しました。ただし、2018年1月の時点で、PPCGの人気コンテストは実際には禁止されていないことがわかりました(これが最新のメタディスカッションであるため)、そもそもサイトのポリシーに反することです。ポプコンは最近人気がないことを理解していますが、これは古い挑戦であり、その性質によりコードゴルフには本当に不適切ですスコアリングシステム。まだ許可されてはならないと強く感じている人がいる場合は、投票を開始する前にメタディスカッションをしましょう。最後に、去年誰かがソリューションをゴルフしようとして過ごしたという偶然について、それはこの挑戦と同じくらい競争力があり、コードゴルフと同じように賞金に値することを保証しますバージョン。

11
Befingeの停止問題を解決する
単純な2D言語を定義してみましょう。信じられないほど元の名前befingeを与えます。Befingeには5つの指示があります。 <>^v、ほとんどの2Dエソランのように、それぞれの方向に命令ポインターをリダイレクトします。 . ノーオペレーションです。 命令ポインタは、左上隅から右に向かって始まります。命令ポインターが端に達すると、プログラムは停止します。すべてのBefingeプログラムは明らかに停止するか、何もしない無限ループに入ります。以下に2つの例を示します。 停止: >.v ..< ノンハルティング: >....v ..v..< ..>v.. ^..<.. 停止の問題はチューリング完全言語では解決できませんが、この問題では解決できます。タスクは、befingeプログラムを表す文字列を入力として受け取り、停止するかどうかに応じてtrueまたはfalseの値を返すプログラム(または関数)を作成することです。 入力はこれらの文字のみで構成され、スペースを埋めて長方形を形成すると想定できます。 指示には5文字の任意のセットを使用できます(例:)adws 。 テストケース 停止: . v> >^ ....v.... ....>...v .^..<.... .......v< .......v. ....^..<. v<>v>v^ >v^>^>v <>>^v<v v^<>v^< ノンハルティング: >..v ^..< >v< v<. >v. v<. >.^ >.>.>.v .><.<.< これはcode-golfであるため、最短のプログラム(バイト単位)が優先されます。

14
これは切り捨てられた三角形の数ですか?
関連するOEISシーケンス:A008867 切り捨てられた三角数 三角形の数の一般的なプロパティは、三角形に配置できることです。たとえば、21を取り、osの三角形に配置します。 o ああ おー おおおお ああ おっと 各角から同じサイズの三角形を切り取る「切り捨て」を定義しましょう。21を切り捨てる1つの方法は次のとおりです。 。 。。 おー おおおお 。おー。 。。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 …
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へのより大きなリンクがあります。 有効なプログラムは3つだけです: * 「Hello World」を印刷します * 0〜2,147,483,647の乱数を出力します *+* 永遠に実行します。 3番目のケースは、この質問の仕様に従った無限ループでなければなりません 入力: 入力は、標準のI / Oルールで受け入れ可能な任意の入力方法で取得できます。 上記のプログラムのいずれかになります 出力: 最初のケースではHello World、末尾の改行の有無にかかわらず、正確に印刷する必要があります。 2番目の場合、言語の整数の最大値が2,147,483,647より小さい場合は、言語の整数の最大値を使用します 最初と2番目のケースは、標準のI / Oルールで受け入れ可能な出力に出力できます。 3番目のケースでは、出力は行われません。 得点: これはcode-golfであるため、バイト単位の最短回答が勝ちです。
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 bis 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
Modilar SNISPの停止問題を解決する
Befingeの停止問題を解決するという精神で、Modilar SNISPと呼ばれる別の2D言語を定義しましょう。Modilar SNISPには、次の6つの手順があります。 \ 命令ポインタを次のように指示します。 上から近づいた場合は右に進みます。 右から近づいたら上へ。 下から近づいた場合は左に進みます。 左から近づいたら下へ。 / 命令ポインタを次のように指示します。 上から近づいた場合は左へ。 左から近づいたら上へ。 下から近づいた場合は右に進みます。 右から近づいたら下がる。 ! 次の命令をスキップします。 @ IPの場所と方向を呼び出しスタックにプッシュします。 #呼び出しスタックからIPの場所と方向をポップして復元し、次の命令をスキップします。呼び出しスタックが空の場合、実行は停止します。 . 何もしません。 命令ポインタは、左上隅から右に向かって始まります。それがプレイフィールドを離れると、実行は停止します。 Modilar SNISPはPDAよりも強力ではありません。無制限のストレージの唯一のソースは有限のアルファベット(すべてのIP(場所、方向)ペアのセット)を持つスタック(呼び出しスタック)であるためです。停止の問題はPDAで決定できるため、この課題は常に可能です。 チャレンジ あなたの目標は、Modilar SNISPプログラムを表す文字のマトリックスを受け取り、停止するかどうかに応じて2つの異なる出力の1つを返すプログラムを作成することです。 これはcode-golfなので、有効な最短のプログラム(バイト単位)が優先されます。 仕様書 文字のマトリックスを取る方法は柔軟です。改行で区切られた文字列、文字列の配列、文字の配列の配列、2次元の文字の配列、幅を表す整数を持つ文字のフラットな配列などはすべて受け入れられます。テストケースでは、最初の選択肢を選択します。 入力行列は長方形で(短い行にパディングする必要がないため)、長さと幅がゼロでないと想定できます。 真実/偽物だけでなく、2つの異なる出力を選択できます。 あなたが入力行列が唯一の有効なコマンドで構成されることを前提とすることができます(\、/、!、@、#、および.)。 コマンドが「次の命令をスキップする」と言われた場合、スキップする次の命令があると想定できます。特に、(1)IPがプレイフィールドのエッジにあり、(2)IPがそのエッジに対して垂直に移動しているため、「次の命令」がプレイフィールドの外側にあるような状況では発生しません。 テストケース 次のスニペットは、言語でプログラムをテストするために使用できます。これは、ここで指定された実際の仕様よりも若干許容範囲が広いことに注意してください(たとえば.、no-ops 以外の文字を許可します)。 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 …

4
ブレインの停止問題を部分的に解決する***
停止問題を解決するには、プログラムの説明が表示され、プログラムが終了するかどうかを判断する必要があります。すべてのプログラムに対してこれを行うことはできません。(brainf ***のような)プログラムの場合: > それは明らかに停止し、次のようなプログラムの場合: +[] それは明らかにしません。あなたの課題は、可能な限り多くのプログラムの停止問題を「解決」することです。これらのプログラムは.またはを使用,せず、入力も出力もありません。プログラムの説明が表示され、「停止」、「停止しない」、または「不明」のいずれかを出力する必要があります。プログラムが「停止」または「停止しない」を出力する場合、入力プログラムは解決されています。ここにいくつかの要件があります。 それは少なくとも無限の量のプログラムを解かなければならない。 それが解決するすべてのプログラムについて、そのソリューションは正しい必要があります。 上記の3つの選択肢から1つだけを出力できます。 実行中のコンピュータには無限の時間とメモリがあるため、XKCD 1266は機能しません(テープは無制限です)。 外部リソースはありません。 停止の問題を実際に解決できるプログラミング言語を使用することはできません。 プログラムである文字列を受け取り、必要に応じてその抽象構文ツリーを生成する非コード側プログラムがある場合があります。これは実際にはスコアリングではありませんが、あるプログラムが別のプログラムよりも優れているかどうかを判断する方法に注意してください。 プログラムAがBが解決しない無限の数のプログラムを解決するが、Bが解決するプログラムが有限であるか、Aが解決しない場合、Aが自動的に勝ちます。 それ以外の場合は、文字数が最も少ないプログラムが優先されます。空白やコメントは数えないので、コードを難読化しないでください。 ヒント:タイマーは機能しません。いつでもTと指定されたマシンにはNがあり、それより長いプログラムはすべてT時間以上かかる必要があることがわかります。これは、タイマーは有限数のプログラムの解を達成することしかできないことを意味し、上記からわかるように、有限数のプログラムを解いても役に立ちません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.