問題
問題は下記の通りです。チェックプログラムに通る作品ができましたら、ログインしてマイページからご応募ください。
作品受付は終了しました。多数のご応募ありがとうございました。
問題とルール
問題
お腹をすかせたカメたちが、エサいっぱいの広場にやってきました。
道に落ちていたり、高いところにぶら下がっていたりと、エサはあちこちにあります。
効率よくエサの場所に移動し、時にはみんなで協力して、早くエサを食べましょう!

ルール
広場について
広場は長方形で、x,yのグリッドで表現されます。(x,yは整数)。
後述するカメとエサはこの広場にx,yのグリッド単位で配置されます。
カメについて
カメは広場に複数存在します。初期位置はランダムです。
各カメは1ターン毎に上下左右のいずれかに1歩移動できます。
同じ位置に複数のカメが重なることができます。
エサについて
エサは広場に複数存在します。初期位置はランダムです。
エサは、ある高さのところに設置されます。設置される高さはランダムな整数です。
エサを食べる方法
エサは色々な高さに配置されているので、カメ同士協力しないと高い位置のエサは食べられません。
同じ位置に複数のカメが集まることで、高い位置にあるエサを食べることができます。
例えば高さが3のエサを食べるには、カメが3匹そのエサの位置に集まらないといけません。
1ステージの流れ
1ターン毎に以下の処理を行うことができます。
- 上下左右のいずれかに1歩移動する。
- 何もせずに待機する。
すべてのエサを食べるとそのステージは終了です。
1000ターンが経過すれば、自動的にそのステージは終了となり、次のステージに進みます。
全てのステージでかかったターンの合計が、最終的な評価となります。
ビューア
問題パッケージには、作品の挙動を確認できるビューアも含まれています。ビューアはwebブラウザで動作します。

選考基準
総ターン数と処理時間
ステージを規定回数繰り返し、ステージ毎のターンの総和を競います。
総ターン数が少ないほど上位となります。
総ターン数が同じ場合は、処理時間が短い作品から上位とします。
総ターン数も処理時間も同じ場合は、先に応募された作品から上位とします。
サーバの評価環境について
サーバの評価環境は、配布パッケージと基本的に同一です。
ただし、乱数のシード値は配布パッケージと異なるものが使用され、また乱数の算出方法も異なります。
手元でいくつかの乱数シードを試すなど、安定した作品を目指すことをおすすめします。
詳しくは問題パッケージに含まれているREADME.txtをご覧ください。
問題パッケージのダウンロード
下のボタンで問題パッケージのダウンロードページへ進んでください。
問題パッケージに含まれるファイルの詳細については、問題パッケージダウンロードページで確認していただけます。
作品規定
- オリジナルのプログラムに限ります。
- 使用可能な言語はC++です。※C++11が使えます。
ただし、以下の機能は使用できません。- インラインアセンブラ
- 例外(try,catch,throw 等)
- 標準ライブラリが使えます。適宜、必要なファイルをインクルードして使用してください。
- マルチスレッド、マルチプロセスは禁止とします。
- #pragma は使用できません。
- 巨大な応募作品はエラーとなることがあります。
- 問題パッケージでは制限時間はありませんが、評価環境での制限時間は60秒です。
- 応募前に必ずPC上で実行して、チェックが通ることを確認してください。
- 特定のステージに依存したチューニングを行うことを禁止します。例えば、X番目のステージの時は、あらかじめ用意した配列に基づいて行動を決定するというような処理は禁止とします。
- 応募作品は応募時に自動チェックされますが、後ほど実行委員会が直接チェックする場合があります。たとえチェックが通っていても、不適切と認められる場合は無効と判定されることがありますのでご了承ください。
- 応募作品のチェックはハル研究所オリジナルの評価環境で行いますが、 問題パッケージに含まれるものと同一のチェックプログラムでのチェックとなります。ただし、評価環境では別の乱数のシード値で評価が行われますのでご注意ください。
- std::random_deviceを使うと、実行時エラーになります。