Node Network
隣接するCPUに値を手渡し、入力ストリームをターゲットに変換する小さなアセンブリをCPUグリッドに書き込みます。デッドロックには注意してください。
プレイ方法
あなたは非常に小さなコンピュータのグリッドをプログラミングします。各ノードは独自の短い命令リストを実行し、隣接するノードとのみ通信してポート経由で値を渡します。そのため、グリッドを横断する必要がある値は、ノードごとに手渡しで中継されなければなりません。
- 各ノードにはアキュムレータと、値の移動、加算、減算、ジャンプといった少数の命令があります。
- ノードは、上・下・左・右の隣接ノード、または入力・出力ストリームから読み書きできます。
- ポートはブロッキングします。右に書き込むノードは、右隣のノードが左から読み取るまで待機します。
- つまり、2つのノードは値だけでなく、タイミングでも合意する必要があります。
- 誰も進捗を記録せず、誰かが待機している状態で1サイクルが経過すると、グリッドはデッドロックします。
- 出力ストリームがレベルが要求するターゲットと一致した時点で、パズルは解かれます。
操作方法
- デスクトップ: 各ノードのテキストボックスにコードを入力し、ドロップダウンからレベルを選択して「実行」を押します。
- スマートフォン・タブレット: 動作しますが、コード入力には外部キーボードの使用を強く推奨します。
ゲームモード
- デイリー: 今日の日にちをシードとする、全員共通のパズル1問。
- プラクティス: 「新規」ボタンで新しいランダムな入力を循環してプレイできます。
ヒントと戦略
- 算術よりも先に経路を設計してください。失敗の多くは、値が目的地に届かないことであり、計算結果が誤っていることではありません。
- 2つのノードが互いを待っている状態は、典型的なデッドロックです。どちらかが読み取る前に両方が互いに向かって書き込むと、どちらにも進めなくなります。
- 可能な限り、トラフィックを一方向に保ちましょう。一貫した方向性を持つグリッドは、値が交差するグリッドよりも推論しやすくなります。
- 必要に応じて、ノードを純粋なリレーとして使用してください。値をただ受け渡しするだけの役割も、正当かつしばしば必要とされる仕事です。
- 誤った答えではなく、ブロックされたノードを読み解きましょう。出力が停滞したとき、どのノードが誰を待っているかが重要な情報源です。
身につくスキル
Node Networkは、プロセッサのメッシュ全体でメッセージパッシングとデッドロック回避を行う並列プログラミングパズルです。
- スキル: 並列・同時実行プログラミング、メッセージパッシング、デッドロック回避
- 対象: 中学3年~高校3年程度(14歳以上)
- 保護者・先生向け: 同時実行とデッドロックを、実践的に体験できます。
起源
ごく小さなコンピューターが並んだグリッドで、それぞれが自分の短い命令リストを実行し、すぐ隣のノードとしか通信できないというのは、2015年7月にZachtronicsが発表したTIS-100である。そのパズルは、架空の、破損した1970年代の機械を舞台にしていた。
教えられる制約は現実のものであり、並列計算の中心にある。共有メモリがなければ、グリッドを横断する必要のある値は、メッセージパッシングによって、ノードからノードへと手作業で中継しなければならない。
そして手作業で中継することで、デッドロックに出会う。二つのノードがそれぞれ相手を待ち、どちらも永遠に止まってしまう。これはホワイトボードでは本当には説明できないバグである。難しさのすべては、各ノードが個別には正しく振る舞っていることにあるからだ。
Node Network について
Node Networkは、プロセッサのメッシュ全体でメッセージパッシングとデッドロック回避を行う並列プログラミングパズルです。PlayPendiumのために社内で開発された、オリジナルの無料ブラウザゲームです。
ブラウザで遊べる無料のオリジナルゲーム — ダウンロード不要。すべてのゲームを見る →