このブログは、株式会社フィックスターズのエンジニアが、あらゆるテーマについて自由に書いているブログです。
こんにちは。エンジニアの二木です。
毎年恒例の社内プログラミングコンテストが開催されました。今回のお題は『ノードレス』という、グラフ構造を持つフィールド上で対戦する陣取りゲームとなっています。今月の6日から開催されていますが、締め切りが来年の2月15日なので、今から参戦しても余裕をもって取り組めると思います。
詳しい内容については社内プログラミングコンテストの説明(PDF)をご覧ください。
ノードレスは、今回の社内プロコンのために作成したオリジナルのゲームとなりますが、まずは、ルールについて簡単に説明します。
ノードレスでは、2人以上のプレイヤーで対戦することができ、各プレイヤーは最初に制御プログラムから対戦するグラフフィールドと1個以上のコマが与えられ、グラフのいずれかのノードにそのコマを置くことができます。コマの置けるノードは、どのプレイヤーの陣地にもなっていないこと(空ノード)が条件になります。
ここでいう陣地とは、一度でもコマが置かれたノードのことをいい、陣地には、本人を含むどのプレイヤーもコマを置いたり、移動させたりすることができなくなります。
コマは、複数のノードにそれぞれ1個以上置くことができ、例えば、5個のコマを持つプレイヤーは、あるノードに2個、別のノードに3個、というように配置できます。そして、コマの配置は全プレイヤーが同時に行います。
2人以上のプレイヤーが同じノードにコマを置いた場合は、置いたコマの最も多いプレイヤーが、2番目に多いプレイヤーとのコマ数の差だけコマを置くことができます。そして、コマを置いたプレイヤー以外のプレイヤーのコマはすべて消滅します。もし上位2プレイヤーのコマ数に差がなかった場合、全員のコマが消滅し、そのノードは空ノードのままとなります。
ここまでが、ノードレスの初期ターンとなり、次に移動ターンが開始されます。
移動ターンでは、プレイヤーのコマの置いてあるいずれか一つのノードのコマを隣接する空ノードに移動できます。ノードに複数のコマが置いてある場合は、隣り合う空ノードに対して一度に複数のコマを動かすことができますが、移動できる空ノードは一つです。
もし、移動ターンで隣接するノードに空ノードが存在しない場合は、そのプレイヤーはゲーム終了となります。この状態のことをノードレスと呼びます。
全プレイヤーの移動ターンが完了したとき、陣地となっているノードが空ノードを囲んだ場合、その空ノードは囲んだプレイヤーの陣地となります。これを占領と呼びます。占領は、占領される空ノードが自分以外のどのプレイヤーの陣地とも接していないことが条件になります。
以下に示すアニメーション画像は、赤・緑・水色によるプレイヤーの対戦例となります。相手を妨害しつつ、効率よくノードを占領している緑プレイヤーが勝利していることが分かります。
本コンテストは、フィックスターズ社員の紹介により社外の方でも参加できるようになっています。もし興味のある方は説明書に記載されている問い合わせ先にコンタクトをお願いします。
毎年、上位入賞者に賞品を用意しています。今年は、ソニーPlayStatoin VR、ソニーワイヤレスノイズキャンセリングイヤホンWF-SP700N、アマゾンEcho Spotなどが予定されています。また、参加賞としてオリジナルデザインTシャツが参加者全員にもれなく貰えます。
結果発表会は来年の2月に予定しており、発表会後に懇親会も行います。創意工夫を凝らした対戦アルゴリズムについて、参加者同士で語るのは楽しいです。
社内プロコンのテーマ・課題を思いつくまでが大変だと毎年ここで言っている気がしますが、今年も例外ではなく、アイデアの創出やその検証については、やはり苦労しました。グラフ構造を扱う、比較的オーソドックスな問題とはなりましたが、初期条件によって状況が大きく変わるので、それに対してどのような戦略が作られるのか、今から楽しみです。
コンピュータビジョンセミナーvol.2 開催のお知らせ - ニュース一覧 - 株式会社フィックスターズ in Realizing Self-Driving Cars with General-Purpose Processors 日本語版
[…] バージョンアップに伴い、オンラインセミナーを開催します。 本セミナーでは、...
【Docker】NVIDIA SDK Managerでエラー無く環境構築する【Jetson】 | マサキノート in NVIDIA SDK Manager on Dockerで快適なJetsonライフ
[…] 参考:https://proc-cpuinfo.fixstars.com/2019/06/nvidia-sdk-manager-on-docker/ […]...
Windowsカーネルドライバを自作してWinDbgで解析してみる① - かえるのほんだな in Windowsデバイスドライバの基本動作を確認する (1)
[…] 参考:Windowsデバイスドライバの基本動作を確認する (1) - Fixstars Tech Blog /proc/cpuinfo ...
2021年版G検定チートシート | エビワークス in ニューラルネットの共通フォーマット対決! NNEF vs ONNX
[…] ONNX(オニキス):Open Neural Network Exchange formatフレームワーク間のモデル変換ツー...
YOSHIFUJI Naoki in CUDAデバイスメモリもスマートポインタで管理したい
ありがとうございます。別に型にこだわる必要がないので、ユニバーサル参照を受けるよ...