問題タブ [conways-game-of-life]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - Getting values from previous "row" in 2D C array
I'm working on a 1D Game of Life (based upon the rules set out here at Mathworld). Essentially, each generation is represented as a row of 0's or 1's (dead or alive) and the next generation is created based upon the binary representation of a "rule" command line argument.
たとえば、ルール 30 は 00011110 (30 のバイナリ) に変わり、これを使用して、新しいセルを生成するか、次の世代で消滅するビット パターンを決定します。
これをプログラムするには、前の行から (ルールを適用するために) 3 つのグループのビットにアクセスできる必要があります。以下はサンプル画像です (開始行は常に 0 で中央が 1 であることに注意してください):
行を生成するには、上の行のビットを 3 つのグループに分けて調べ、ルールを 1/0、ライブ/ダイの決定として適用する必要があります。
基本的に、3 ビット パターンとルールを一致させ、それを使用して子孫の 0 または 1 を出力する予定です。これは一般的なアルゴリズムです:
私が問題を抱えているプログラムの部分は、前の行の内容にアクセスすることです。私のすべての試みは、ガベージまたは不正確なデータをもたらします。
要するに、前の行の値に 3 ビットのグループでアクセスするにはどうすればよいでしょうか?
行は次のように作成されます。
}
わかりましたので、これをかなり単純にして、2 つの配列 (前の列を保持するものと現在の列を保持するもの) を作成します。私が理解していないのは、なぜ出力配列を印刷するとガベージが生成されるのですか? output[i] = arr[i] は有効な式ではありませんか?
c - Cの人生ゲーム
コンウェイのライフ ゲームをやろうと思ったのですが、真剣に苦労しています...これは驚きです! 誰かがアルゴリズムの問題をほのめかすことはできますか? ちょっとしたひと押し?これは宿題ではありません。
これは入力を必要としませんが、(0, 0)、(0, 1)、(1, 0)、および (1, 1) の生きているセルから開始します。1世代後、同じままである必要がありますが、代わりにセルを殺すため、(0, 0) と (1, 0) だけが生きています。
java - 人生ゲームの問題
私は、個人的なプロジェクトとして、コンウェイの人生ゲームの Java 実装に取り組んでいます。これまでのところ機能していますが、ルールが間違っています。期待されたパターンが適切に表示されていません。私のコードに何か問題がありますか?
hash - ハッシュは、2つの32x64 2次元配列を正確に比較するための良い方法ですか?
ConwayのGameofLifeを組み込みデバイスに実装しようとしています。使用できるRAMは1kbしかなく、合計で512バイトに相当する2048個のセルがあります。一度に次世代の8x8セルを計算するので、一度に2世代をRAMに保存する必要はありません。
しかし、私もやりたいのは、GoLがループ/静的状態でスタックしていることを検出することです。PCでモックアップを作成したときは、最後の100世代と1000世代を保存し、現在の世代と比較しました。1kbのRAMではこれを行うことはできません。私が考えているのは、単に最後のx世代のハッシュを計算し、そのハッシュを現在の世代のハッシュと比較することです。
XTEAまたはSHA1の非常に軽い実装がいくつかありますが、両方の世代の個々のセルが等しいかどうかを判断する必要があるため、ハッシュがこの目的に本当に適しているかどうかはわかりません。あなたは何をお勧めします?
ありがとう、
ジョー
編集:考えてみると、実際に一致の数を数えることができ、それが特定のしきい値に達した場合、それがループ内にあると想定しますが、1000世代ごとに繰り返されるパターンではうまく機能しません。
python - Pythonを使ったコンウェイのライフゲーム
私はコンウェイのライフゲームが好きで、Pythonで書き始めました。現時点では、プログラムの境界線用のコードをまだ作成していないので、今持っているものについて助けを求めています。「ブリンカー」フォーメーションを初期化するときに問題が発生するようです。本来のように振動するのではなく、それ自体が立方体に変わるようです。
php - Game of Life(PHP) - 私の出力を理解していません
つまり、基本的に、私はこの Game of Life PHP スクリプトを書いてきました。私の出力はおかしくて、私はそれを理解することはできません! スキーム全体は $world と呼ばれる 2 次元配列で構成され、各値は 1 または 0 (生きているか死んでいるか) の 2 状態のセルに対応します。各セルには 8 つの隣接セルがあります。システムの次の状態を計算するルールは次のとおりです。
- 生きている隣人が 2 ~ 3 人 (1 の場合) いる場合、次のターンも生きています。
- そうでなければ、あなたは死んでいます。
私の実装は次のとおりです: (注: $j_minus
、$i_plus
などは などを参照し$j-1
ますが、エッジを考慮に入れます)
これらのルールが適用され、$new_world がシステムの新しい状態になった後、次のように配列を画面に出力します。
の初期状態に関係なく、私が得るのは、$world
線と大きなブロックでいっぱいの完全に停滞した状態か、そのような状態が 2 ~ 3 ある間の振動です。ルールが正しく適用されていないようです。
java - このConways LifeプログラムをJavaで作成するにはどうすればよいですか
Java で Conway の Game of Life プログラムを作成しており、コマンド ライン バージョンから GUI に変更しようとしています。コマンドラインから、世代を示す配列を印刷しました (ブロックやウィンカーなどのオブジェクトは、空白の一連の 1 と 0 として表示され、GUI では四角として表示されます (白い四角は空白とそうでない場所の青い四角.しかし、私が立ち往生しているのは、グリッド配列をチェックする別のメソッド(配列を出力するメソッドを置き換える)を作成するときです.ゼロがある場合、四角形は白から青、およびその逆. コンウェイの生命規則は、独立した別のクラスで処理され、このメソッドが行うのは、規則によって配列が変更された後、このメソッドがチェックすることだけです。
ルールはあるクラスのメソッドで実行され、GUI コンポーネントは別のクラスで実行されます。しかし、私は両方のインスタンスが必要なので、どうすればそれを行うことができますか?
それが私が今変更したものですが、コンパイルすると、「非静的変数grid
は静的コンテキストから参照できません」および「非静的メソッドrunGUI()
は静的コンテキストから参照できません」と表示されます。メソッドを実行しようとしたとき。
java - 2D 配列と Null ポインターの例外 (Java)
この問題の原因はよくわかりませんが、Conway のライフ ゲームであると思われる私のプログラムは、何をしても、2 世代後にクラッシュするようです。
原因をいくつかの考えられる領域に絞り込みました。少なくとも、あると思います。
上記のこのセクションでは、2D 配列の境界の外側をチェックしていると想定していますが、それが起こらないように予防策を講じたので、それは不可能です。それでも、これは考えられる原因の 1 つです。
これがエラーの原因の次の推測ですが、何が問題なのかはわかりません。
上記のブロックを呼び出すため、上記を投稿しているだけであり、何も除外したくありません。
他に何が問題なのかはよくわかりませんが、誰かが私のプロジェクトの完全なソース コードを見たい場合に備えて、pastebin に投稿しました。
xna - セルオートマトンの高速化
ある種のアルゴリズムまたはそのようなものを使用して、セルオートマトンを高速化することは可能ですか? XNA で作成された Conway の Game of Life 実装を使用しており、完全に動作しますが、128x128 セルより大きいグリッドを使用すると、非常に遅くなるという問題があります。
コードや XNA がテクスチャと描画を処理する方法とは関係ないと思いますが、非常に多くのセルを更新する (つまり、各セルの隣接セルを評価し、それに基づいて新しい状態を取得する) という事実は、大量の計算です。 .
もちろん、理想的なセル オートマトンは無限大である必要がありますが、実際にはそれは不可能です。しかし、私の意見では、128x128 はシステムがどのように動作するかを実際に確認するには小さすぎます。
どんな助けでも大歓迎です!
scala - Scalaでデカルト座標の最小値と最大値を見つける方法
無限のグリッドがあるScalaでGameOfLifeを解決しようとしています。グリッドをセルのセット(x、y)として表現しようとしています。私が言う文字列から読むとき、私は(0,0)から始めます。しかし、GameOfLifeの法則と、Generationクラスにルールを適用した後、Infinite Gridを検討しているため、現在の世代を印刷したいと思います。
ここでは、その世代のGameOfLifeで、生きているセルの場合は「X」、死んだセルの場合は「-」のいずれかを繰り返して印刷を開始する場所から最小位置(x、yイテレーターを読み取る)を計算する方法がわかりません。 GenerationクラスのtoStringメソッドのソリューション。しかし、私はそれにまったく満足していません。誰かがより良い解決策を提案できますか?
ここでのaliveCellsはSet[Cell]であり、CellはCell(x、y)のケースクラスです。