タグ付けされた質問 「busy-beaver」

ビジービーバーは、計算モデルのいくつかのプロパティ(実行時間、メモリ使用量、出力長など)を最大化します。

3
Manufactoria:可能な限り遅い受け入れプログラムを生成する
空の入力テープを受け入れるManufactoriaプログラムを作成します。しかし、すぐにやらないでください!つまり、プログラムをすばやく作成しますが、すぐに実行させないでください。最終的に終了する限り、プログラムが遅いほど良いです。以下のプログラム例には、3:51(シミュレーターによって報告される「合計時間」)がかかります。 http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12:5f3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 ; r9:7f2; c10:7f2; c11:7f2; c12:7f3; q12:8f3; y13:8f2; y14:8f2; y15:8f1; y15:7f0; y14:7f0; y13:7f0; g12:6f3;&ctm = Slow_Accepter!; Generate_the_slowest_possible_accepting_machine;:; 7; 3; 0 ; プログラムは空のテープから始まります。少し落書きする必要がありますが、最終的に出力スクエアに到達します。必要に応じて、テープにデータを残すことができます。7x7 Manufactoriaボードで最も遅いプログラムが勝ちます! あなたの右矢印キーはあなたの友人です、それはシミュレータを高速化します。 シミュレーターをクラッシュさせた場合のボーナスポイント!

2
ローダーの数よりも大きい数のゴルフ
フォローアップとして 出力サイズがGrahamの数を超え、GolfがTREE(3)より大きい数である最短終了プログラムの、私は新しい課題を提示します。 ローダーの数は非常に大きい数であり、説明するのは困難です(それ自体が柔軟な目標を持つコードゴルフ練習の結果であるため)。そこ定義と説明があり、ここではなく、自己封じ込めのために、私も、この記事の後半でそれを説明しようとします。 Ralph Loaderが使用するアルゴリズムは、これまでに作成された(計算可能な)アルゴリズムの中で最大の数の1つを生成します。実際、Loaderの番号は、Googology Wikiで最大の「計算可能な」番号です。(「計算可能な」数とは、計算の観点から定義された数を意味します。)つまり、答えがローダーの数よりも面白い数(つまり、ローダーの数+1だけではない)を生成する場合、 Googologyの歴史!そうは言っても、Loaderのnumber + 1のようなものを生成するプログラムは、間違いなく有効な答えであり、この質問に対する候補です。名声を期待しないでください。 あなたの仕事は、ローダーの数よりも大きい数を生成する終了プログラムを作成することです。これはcode-golfなので、最短のプログラムが勝ちです! 入力を許可されていません。 プログラムは最終的に確定的に終了する必要がありますが、マシンには無限のメモリがあると想定できます。 あなたの言語の数値型は任意の有限値を保持できると仮定するかもしれませんが、これがあなたの言語で正確にどのように機能するかを説明する必要があります(例:浮動小数点数は無限の精度を持っていますか?) 出力として無限は許可されません。 数値型のアンダーフローは例外をスローします。ラップアラウンドしません。 番号が非常に大きい理由の説明と、ソリューションが有効かどうかを確認するためのコードの未使用バージョンを提供する必要があります(ローダーの番号を格納するのに十分なメモリを備えたコンピュータがないため)。 ローダーの番号の説明は次のとおりです。より正確な詳細については、http://googology.wikia.com/wiki/Loader%27s_numberおよびその中のリンクを参照してください。特に、ローダーの番号を(定義により)正確に生成するプログラムが含まれています。 構造の計算は、本質的に非常に特定のプロパティを持つプログラミング言語です。 まず、構文的に有効なプログラムはすべて終了します。無限ループはありません。これは、構築プログラムの任意の計算を実行する場合、プログラムがスタックしないことを意味するため、非常に便利です。問題は、これは構造の計算がチューリング完全ではないことを意味することです。 第二に、チューリング以外の完全な言語の中で、最も強力な言語の1つです。基本的に、チューリングマシンがすべての入力で停止することを証明できれば、それをシミュレートする構造計算の関数をプログラムできます。(停止しても、停止できないことを証明できない停止マシンがあります。) ローダーの番号は、基本的に構造の計算のためのビジーなビーバー番号です。これは、すべてのcocプログラムが終了するため計算が可能です。 特に、loader.cはと呼ばれる関数を定義しますD。おおよそ、D(x)未満のすべてのビット文字列を反復処理しx、それらをcocプログラムとして解釈し、構文的に有効なものを実行し、結果を連結します(これもビット文字列になります)。この連結を返します。 ローダーの番号はD(D(D(D(D(99)))))です。 googolology wikiからのコードのより読みやすいコピー int r, a; P(y,x){return y- ~y<<x;} Z(x){return r = x % 2 ? 0 : 1 + Z (x / 2 );} L(x){return x/2 >> …

30
最小入力からの出力を最大化する
明らかに、コードゴルフは、最小限のコードを最大限に活用することです。実際の出力が本当に重要なのは誰ですか? 一方で、私たちが持っていた最高の入力から出力への挑戦比率を、これがためのコールで最も有限と決定論与えられた符号長で出力。皮肉なことに、この課題はcode-golfではありません。 ルール: 3つの独立したスニペットを作成します(完全なプログラム/機能ではありません)。 スニペットは同じ言語である必要があります。 スコアは、出力されたバイトの総数です。 出力は、結果、STDOUTなどの形式になります。 スニペットによりエラーが発生することはありません。 スニペットは、さまざまな形式の出力を引き起こす可能性があります。 末尾の改行文字はカウントされません。 最初のスニペットは1バイト、または少なくとも1バイトの出力を生成する最小長でなければなりません。 2番目のスニペットは、それより1バイト長くする必要があります。 3番目のスニペットは、最初のスニペットよりも2バイト長くする必要があります。

3
最長の非繰り返しGame-of-Lifeシーケンス
正の整数Nを与え、ゲームオブライフルールで最長の非反復シーケンスを生成し、トーラスで再生される固定パターン(長さ1のサイクル)で終わるN x Nグリッドの開始パターンを決定します。 目標は最短のプログラムではなく、最短のプログラムです。 世界は有限であるため、最終的にはループに陥り、すでに訪れた状態を繰り返します。このループに期間1がある場合、開始パターンは有効な候補です。 出力:開始パターンとシーケンス内の一意の状態の総数(開始パターンを含む)。 現在、1x1トーラスは特別なものです。セルはそれ自体に隣接していると見なされているかどうかに関係ありませんが、実際には問題はありません。いずれの場合も、単一の生きているセルは(過密または孤独の)死ぬだけです。したがって、入力1は、長さが2のシーケンスを生成します。このシーケンスは、1つのセルが生き、その後は永遠に死んでいます。 この質問の動機は、忙しいビーバー機能に類似しているが、メモリに限界があるため、間違いなく複雑です。これは、OEISにも含めるのに適したシーケンスです。 N = 3の場合、シーケンスの長さは3で、左側のパターンは完全に黒い3x3正方形に達し、その後死にます。(1サイクルの一部であるすべてのパターンが削除されます)。

3
コンコルドのlight状
バックグラウンド 巡回セールスマン問題(TSP)は最短回路を尋ね訪問その都市の指定されたコレクション。この質問の目的のために、都市は飛行機内の点であり、それらの間の距離は通常になりますユークリッド距離(最も近い整数に丸められます)になります。サーキットは「往復」でなければなりません。つまり、出発都市に戻る必要があります。 コンコルドTSPソルバは、ユークリッド巡回セールスマン問題のインスタンスを解決することができ、正確かつはるかに高速1が期待するよりも。たとえば、コンコルドは85,900ポイントのインスタンスを正確に解決できました。その一部は次のようになります。 ただし、一部のTSPインスタンスは、コンコルドの場合でも時間がかかりすぎます。たとえば、誰も解決できませんでした、モナリザに基づいてこの100,000ポイントのインスタンスを。(あなたがそれを解決できるなら、1,000ドルの賞金が提供されます!) Concordeは、ソースコードまたは実行可能ファイルとしてダウンロードできます。デフォルトでは、組み込みの線形プログラム(LP)ソルバーQSoptを使用します使用しますが、CPLEXなどのより良いLPソルバーを使用することもできます。 チャレンジ Concordeに5分以上かかる、生成できる最小のTSPインスタンスは何ですかが解決するますか? インスタンスを出力するプログラムを作成するか、他の方法を使用できます。 得点 インスタンス内のポイントが少ないほど良い。インスタンスのファイルサイズによって関係が壊れます(以下を参照)。 標準化 異なるコンピューターはより高速または低速で実行されるため、ランタイムの測定基準としてConcorde用NEOSサーバーを使用します。次の単純な2次元座標形式でポイントのリストを送信できます。 #cities x_0 y_0 x_1 y_1 . . . x_n-1 y_n-1 NEOSで使用する必要がある設定は、「コンコルドデータ(xyリストファイル、L2ノルム)」、「アルゴリズム:コンコルド(QSopt)」、および「ランダムシード:固定」です。 ベースライン TSPLIBrl1889.tspからの1,889ポイントのインスタンスには、「合計実行時間:871.18(秒)」がかかります。これは5分以上です。次のようになります。

4
忙しい脳ビーバー
できるだけ多くのステップを実行しますが、無限ループしない256文字以下のBrainfuckプログラムを作成します。プログラムは入力を受け付けません。 すなわち: 右側に無数のセルがあると仮定します。 A <左端のセルに何もしません。 A -セル値がゼロセットセルです255。 命令は+-<>.すべて、実行時に1つのステップとしてカウントされます。 とき[かが]検出され、それが一歩としてカウントされます。ただし、条件が真であり、制御フローがジャンプする場合、対応する]または再びステップとしてカウントされ[ません。 最も多くのステップを踏むソリューションが勝ちです。 ソリューションにある種のパターンがある場合、同様の長さのプログラムnがとるステップ数の関数を与えることは歓迎されますが、必須ではありません。 指示を数えるために、この修正されたインタープリターを使用できます: 例: ++[-] 検出された命令は++[-]-]であり、プログラムは7ステップ実行されました。

14
ファイルにゼロを埋め込む
今日のタスクは、既存のファイルを取得し、特定のサイズに達するまでゼロを追加することです。 現在のディレクトリ内のファイル名fとバイト数を取得するプログラムまたは関数を作成する必要がありますb。の元のコンテンツを維持しながら、新しいサイズがバイトになるように、末尾にfゼロ(ASCIIバイトではなくヌルバイト)を書き込む必要がありbます。 あなたは、と仮定してよいfことは、当初よりも大きくないと、あなたはそれを完全なアクセス許可を持っていることを、その名前だけでASCII英数字を持っていbますが、同じ大きようなものであってもよいb、と無限の空きディスク容量があること。 f空でないと仮定したり、すでにヌルバイトが含まれていないと仮定したりすることはできません。 実行が終了した後、他の既存のファイルを変更したり、新しいファイルを作成したりしないでください。 テストケース fの内容| b | fの結果の内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空の] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

9
BigNumベイクオフリブート
皆さんの中には、BigNum Bakeoffに精通している人もいるかもしれません。目標は、多少の制約と理論的条件、たとえばプログラムを実行できるコンピューターの下で、出力が最大になるCプログラムを作成することで多少要約できます。 同じ精神で、私はすべての言語に開かれた同様の課題を提起しています。条件は次のとおりです。 最大512バイト。 最終結果はSTDOUTに出力する必要があります。これがあなたのスコアです。複数の整数が出力される場合、それらは連結されます。 出力は整数でなければなりません。(注:Infinityは整数ではありません。) 10を超える組み込み定数はありませんが、数字/桁は問題ありません(たとえば、Avogadroの定数(組み込み定数として)は無効ですが、10000は無効です)。 実行するのに十分なリソースが提供されたら、プログラムを終了する必要があります。 実行するのに十分なリソースが提供される場合、印刷出力は確定的でなければなりません。 プログラムを実行するのに十分な整数またはbigintが提供されます。たとえば、プログラムで10 1,000,000より小さい数値に基本操作を適用する必要がある場合、これを実行しているコンピューターは少なくとも10 1,000,000までの数値を処理できると想定できます。(注:最大10 2,000,000までの数値を処理するコンピューターでプログラムを実行することもできます。そのため、コンピューターが処理できる最大整数を呼び出しても、確定的な結果は得られません。) 5秒未満でプログラムの実行を完了するのに十分な計算能力が提供されます。(プログラムがコンピューターで1時間実行されていて、すぐに終了しない場合でも心配する必要はありません。) 外部リソースはないので、組み込みでない限り、そのアッカーマン関数をインポートすることを考えないでください。 すべての魔法のアイテムは一時的に寛大な神から借りています。 限界が不明で非常に大きい スティーブンH、ピス f 3 +B³F+ω²(256 26) ここで、B³Fは、次の基本シーケンスを持つChurch-Kleene序数です。 B³F[n] = B³F(n), the Busy Beaver BrainF*** variant B³F[x] = x, ω ≤ x < B³F リーダーボード: 単に美しいアート、ルビー F ψ 0(X(Ω M + X(Ω M + 1 …

8
最長期間の反復クイン
ご存知のように、クインは独自のソースコードを出力するプログラムです。ただし、別の別のプログラムを出力して、最初のプログラムを再度出力するプログラムを作成することもできます。たとえば、Python 2プログラム x = '''x = {} print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3''' print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3 実行すると、次のテキストが出力されます。 print """x = '''x = {} print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3''' print 'print '+'"'*3+x.format("'"*3+x+"'"*3)+'"'*3""" Pythonプログラムとして実行すると、元のコードが再び出力されます。これは反復クインと呼ばれます。元のコードに戻すには2回実行する必要があるため、ピリオド2を持っていると言います。しかし、もちろん、もっと長い期間も可能です。 あなたの課題は、可能な限り長い期間の反復クインを、選択した言語で100バイト以下で記述することです。(上記の私の例は、末尾の改行を含めて119バイトであるため、この仕様には適合しません。) 次の規則と説明に注意してください。 通常のquine規則が適用されます。つまり、プログラムは独自のソースコードに直接アクセスできる言語機能を使用できません。 反復された出力は、最終的に元のコードに正確にループバックする必要があり、デモンストレーションまたはそれができることの証明を含める必要があります。 また、サイクルがそうである限り、そのサイクルが長い理由の説明も含める必要があります。これは数学的な証明のレベルである必要はありませんが、あなたの言語に精通している誰かに説得力があるはずです。(この規則はここにあります。非常に大きな数の回答が含まれると予想されるためです。) 少なくともそれが長いことを証明できる限り、正確な数を与えるのではなく、「少なくとも1,000,000回の反復」のようなことを言っても問題ありません。この場合、スコアは1,000,000になります。そうでなければ、あなたのスコアはあなたのクインの期間です。 100バイトの制限は初期プログラムにのみ適用されます-それが出力するプログラムは長くなる可能性がありますが、元のコードを出力するには、最終的に100バイトに戻す必要があります。 マシンに無限のRAMと無限のランタイムがあると想定できますが、言語に無制限の精度のデータ型(整数など)がない場合は想定できません。あなたはできるあなたのパーサが処理できる入力の長さに制限はありませんと仮定します。 最も高いスコアが勝ちます。 注意:Quit Whiningと呼ばれる既存の課題があります。クインを繰り返すことには、クインの反復も含まれます。ただし、同じコンセプトに基づいていることを除けば、これらはまったく異なるタイプの課題です。もう1つはまっすぐなコードゴルフですが、これは(意図的に!)偽装で忙しいビーバーの問題です。この質問への適切な回答を生成するために必要な手法は、他の質問への回答に必要なものとは非常に異なる可能性が高く、これは仕様によるものです。

1
コンビネーター・クイン
バックグラウンド 組み合わせロジックとは何かを学習しました。さまざまなコンビネーターに興味をそそられ、かなりの時間を費やしてそれらについて学びます。最後に、この特定の式に遭遇します。 (S I I (S I I)) あなたはそれを通常の形に還元しようとするとき、それは3つのステップの後にそれ自身に還元することに気づきます: (S I I (S I I)) = (I (S I I) (I (S I I))) (1) = (S I I (I (S I I))) (2) = (S I I (S I I)) (3) あなたはこの特性を共有する他の表現を見つけ、これにすぐに取り掛かろうと決心しました。 ルール 次のコンビネータの任意の組み合わせを使用できます。 B f g x = …

2
32バイト以下のx86マシンコードで最もビジーなビーバーを構築する
あなたの仕事は、最大32バイトのコードを使用し、ゼロ化されたレジスターから始めて、可能な限り多くの命令を実行して停止するx86マシン言語(任意のバージョン)でプログラムを書くことです。 x86マシンで使用可能な形式である限り、ランダムアクセスメモリについては何でも想定できます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.