問題

問題は下記の通りです。チェックプログラムに通る作品ができましたら、ログインしてマイページからご応募ください。

作品受付は終了しました。多数のご応募ありがとうございました。

問題

昔むかし、かけっこでカメに負けてしまったウサギがいました。

悔しさを胸にウサギは修行の旅にでます。

次こそ勝つために、修行の地に散らばる秘伝の巻物を集めてください。

ウサギのかけっこ修行

ルール

修行の地について

修行の地は正方形で、位置は浮動小数点数(float)を用いて、x,y で表現されます。

後述するウサギと巻物は修行の地にランダムに配置されます。

修行の地は長さ 1 でマス目状に区切られていて、マス目ごとに平地、茂み、砂地、池のいずれかの地形が設定されています。

ある位置 x,y がどのマスに属するかは x,y それぞれの整数部によって判定されます。

ウサギについて

ウサギの初期位置はランダムに選択したマス目の中心です。

ウサギは 1 ターン毎に任意の位置にジャンプ移動できます。

ただ移動可能な距離は足元の地形、巻物取得数で変化します。(後述)

巻物について

修行の地には巻物が1つ以上存在します。

巻物の初期位置はランダムに選択したマス目の中心です。

ウサギは巻物と同じマスに着地することで巻物をとることができます。

ウサギは巻物をとるとジャンプ力を向上させることができます。(後述)

ウサギのジャンプ移動について

ウサギにはジャンプ力があり、その初期値は 1.0 です。

巻物をとるごとにジャンプ力は 1.1 倍になります。

例) 巻物を 3 個とった場合、ジャンプ力は 1.0 * 1.1 * 1.1 * 1.1 = 1.331 になります。

修行の地のマス目に設定された地形ごとにジャンプ力に対する倍率が設定されています。

地形倍率
平地1.0
茂み0.6
砂地0.3
0.1

ウサギが現在いるマス目の地形の倍率とジャンプ力をかけたものが、ジャンプ移動可能距離となります。

例) 巻物を 3 個もち砂地にいる場合、ジャンプ移動可能距離は 1.0 * 1.1 * 1.1 * 1.1 * 0.3 = 0.3993 になります。

移動先を指定することでウサギを移動させることができます。

移動先がジャンプ移動可能距離よりも遠い場所の場合は、方向はそのままに距離をジャンプ移動可能距離で丸めた位置に移動します。

1ステージの流れ

1 ターン毎にジャンプ先となる位置を決めます。(※先述の通り、移動結果はジャンプ移動可能距離によって制限を受けます。)

すべての巻物をとるとそのステージは終了です。

また、以下の場合は巻物が残っていてもステージは終了となり、ターン数は 1000 として計算されます。

  • 1000 ターンが経過する
  • 移動の結果、修行の地の外へ出てしまう

全てのステージでかかったターンの合計が、最終的な評価となります。

選考基準

総ターン数と処理時間

ステージを規定回数繰り返し、ステージ毎のターンの総和を競います。

総ターン数が少ないほど上位となります。

総ターン数が同じ場合は、処理時間が短い作品から上位とします。

総ターン数も処理時間も同じ場合は、先に応募された作品から上位とします。

サーバの評価環境について

サーバの評価環境は、配布パッケージと基本的に同一です。

ただし、乱数のシード値は配布パッケージと異なるものが使用され、また乱数の算出方法も異なります。

手元でいくつかの乱数シードを試すなど、安定した作品を目指すことをおすすめします。

詳しくは問題パッケージに含まれているREADME.txtをご覧ください。

ビューア

問題パッケージには、作品の挙動を確認できるビューアも含まれています。ビューアはwebブラウザで動作します。

ビューア

問題パッケージのダウンロード

下のボタンで問題パッケージのダウンロードページへ進んでください。

問題パッケージダウンロードページ

問題パッケージに含まれるファイルの詳細については、問題パッケージダウンロードページで確認していただけます。

作品規定

  • オリジナルのプログラムに限ります。
  • 使用可能な言語はC++です。※C++14が使えます。
    ただし、以下の機能は使用できません。
    • インラインアセンブラ
    • 例外(try,catch,throw 等)
  • 標準ライブラリが使えます。適宜、必要なファイルをインクルードして使用してください。
  • マルチスレッド、マルチプロセスは禁止とします。
  • #pragma は使用できません。
  • 巨大な応募作品はエラーとなることがあります。
  • 問題パッケージでは制限時間はありませんが、評価環境での制限時間は60秒です。
  • 応募前に必ずPC上で実行して、チェックが通ることを確認してください。
  • 特定のステージに依存したチューニングを行うことを禁止します。例えば、X番目のステージの時は、あらかじめ用意した配列に基づいて行動を決定するというような処理は禁止とします。
  • 応募作品は応募時に自動チェックされますが、後ほど実行委員会が直接チェックする場合があります。たとえチェックが通っていても、不適切と認められる場合は無効と判定されることがありますのでご了承ください。
  • 応募作品のチェックはハル研究所オリジナルの評価環境で行いますが、 問題パッケージに含まれるものと同一のチェックプログラムでのチェックとなります。ただし、評価環境では別の乱数のシード値で評価が行われますのでご注意ください。
  • std::random_deviceを使うと、実行時エラーになります。

top