Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/giginet/hpc2014
https://github.com/giginet/hpc2014
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/giginet/hpc2014
- Owner: giginet
- Created: 2014-10-31T09:54:39.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2014-11-09T04:37:42.000Z (about 10 years ago)
- Last Synced: 2024-10-14T09:53:31.521Z (3 months ago)
- Language: C++
- Size: 554 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.txt
Awesome Lists containing this project
README
★ 『ハル研究所プログラミングコンテスト2014』へようこそ! ★
Copyright HAL Laboratory, Inc. All rights reserved.
この度は『ハル研究所プログラミングコンテスト2014』へのご参加、
誠にありがとうございます。
今回の問題は、題して「見習い忍者の水蜘蛛レース」です。
皆さんのアイディアに富んだ作品をお待ちしています。
------------------------------------------------------------------------
問題ルール
------------------------------------------------------------------------
見習い忍者をうまく操作し、他の先輩忍者より先に池の上の蓮を順番に
通過して3周することが目的です。
◆池について
・二次元の矩形で表現された池の上に、円で表現された蓮が散らばって
います。
・外周は壁になっており、忍者が衝突すると速度がゼロになります。
・池には、一方向への水の流れが発生している場合があります。
◆忍者について
・忍者は円で表現されており、操作は加速と待機のみできます。
・加速は回数制限があり、一定ターン経過する毎に使用できる回数が
増えます。
・蓮に接触すると、その蓮を通過したことになります。
・忍者同士は静止円と静止円で衝突します。
◆先輩忍者について
・池の上には、先輩忍者が何人か存在します。
・先輩忍者はあなたが操作する見習い忍者以上の能力です。
◆1ステージの流れ
・1つの池の蓮を順番に通過し、3周するまでの流れを1ステージと
呼びます。
・ステージ開始時、忍者はランダムな初期位置にいます。
・処理は「ターン」と呼ばれる単位で行われます。
・ターンごとにそのターンでの行動を決定します。
・行動は次の2種類から選択できます。
加速:指定位置の方向に、一定速度で加速します。
待機:何もせず待機します。
・全ての蓮を順番に通過し3周すれば、そのステージは終了。
次のステージに進みます。
・先輩忍者が全員周回完了した時、または3000ターンが経過しても
周回完了できない時は、強制的にステージ終了。次のステージに
進みます。
・最終的なスコアは、「通過した蓮の数とステージ終了までのターン数、
周回完了時の順位」で計算されます。
------------------------------------------------------------------------
選考基準
------------------------------------------------------------------------
◆スコアと処理時間
・ステージを規定回数繰り返し、スコアの合計を競います。
スコアが高いほど上位となります。
・スコアが同点の場合は、処理時間が短い作品から上位とします。
・スコアも処理時間も同じ場合は、先に応募された作品から
上位とします。
◆最終スコア
・応募期間終了後、問題生成に使用する乱数のシード値を変更し、
全応募作品の再評価を行います。
・再評価したスコアを最終的なスコアとし、順位を決定します。
・スコアが同点だった場合の順位付けについては上記と同じです。
◆応募期間終了後の再評価に関する注意点
・応募時にエラーやタイムアウトにならなかった作品でも、
応募期間終了後の再評価によってエラーやタイムアウトになる
可能性があります。
手元でいくつかの乱数シードを試すなど、安定した作品を目指す
ことをおすすめします。詳しくは「補足」を参照してください。
------------------------------------------------------------------------
問題パッケージの内容(抜粋)
------------------------------------------------------------------------
・README.txt はじめにお読みください
・Answer.cpp 応募作品サンプル
・HPC2014.sln Visual Studio 2013用ソリューションファイル
・HPC2014.vcxproj Visual Studio 2013用プロジェクトファイル
・HPC2014.xcodeproj Xcode用プロジェクトファイル
・Makefile GNU Make用Makefile
・viewer ビューア
上記以外に、チェックプログラムのソースファイルもあります。
ビューアについては、後述の「ビューア」をお読みください。
【ご注意】
・問題パッケージに含まれるファイルやツールを、プロコン参加目的
以外で使用すること、および再配布することを禁じます。
・問題パッケージに含まれるファイルやツールを使用したことによって
生じる損害について、弊社は一切の責任を負わないものとします。
------------------------------------------------------------------------
チェック方法
------------------------------------------------------------------------
問題パッケージに含まれるチェックプログラムのソースファイルを
お持ちの環境でコンパイルして実行してください。
実行すると、実装した関数が正しいかどうかチェックし、正しければ
スコアを表示します。
本番の評価時は、DEBUGが定義されずにコンパイルされます。
お持ちの環境でのみ実行したいコードは、DEBUG定義で括ってください。
------------------------------------------------------------------------
ビューア
------------------------------------------------------------------------
問題パッケージには、作品の挙動を確認できるビューアも含まれています。
ビューアはwebブラウザで動作し、チェックプログラムから出力される
JSONファイルを読み込むことで動作させることができます。
チェックプログラムからJSONファイルを出力するためには、
コマンドプロンプトや端末などのコンソールから-j オプションをつけて
プログラムを実行し、実行結果をファイルにリダイレクトします。
下の例は、JSONファイルを output.json に出力しています。
./hpc2014 -j > output.json
またビューアでは、以下のライブラリを利用しています。
jQuery, jQueryUI, Underscore.js, Twitter Bootstrap, Angular.js
ライブラリの利用規約については、viewer フォルダに含まれる
各ライセンスファイルを参照してください。
------------------------------------------------------------------------
動作確認済み環境
------------------------------------------------------------------------
Visual Studio 2013 (HPC2014.sln, HPC2014.vcxproj を使用)
Xcode 3.2.4 (HPC2014.xcodeproj を使用)
GNU-CC 4.8.2 (Makefile を使用)
ビューア
Windows 8.1 / Internet Explorer 11
Mac OS X v10.9 / Safari 7
※上記以外のブラウザでは正しく動作しない場合があります。
------------------------------------------------------------------------
応募していただくもの
------------------------------------------------------------------------
応募していただくのは、Answer.cpp またはこれに相当するソース
コードです。
ログインしてマイページの「応募する」で、テキストボックスに
ソースコードとコメント(任意入力、64文字まで)を入力して
送信してください。
------------------------------------------------------------------------
作品規定
------------------------------------------------------------------------
・オリジナルのプログラムに限ります。
・使用可能な言語はC++言語です。ただし、以下の機能は使用できません。
・インラインアセンブラ
・64ビット整数型
・標準ライブラリ
・new,delete
・例外(try,catch,throw等)
・評価時に、#include, #pragma行は自動的に削除されます。
・巨大な応募作品はエラーとなることがあります。
・問題パッケージでの制限時間と、評価環境での制限時間は異なります。
制限時間は、問題パッケージでは20秒、評価環境では40秒です。
・応募前に必ずPC上で実行してチェックが通ることを確認してください。
・特定のステージに依存したチューニングを行うことを禁止します。
例えば、X番目のステージの時は、あらかじめ用意した配列に基づいて
行動を決定するというような処理は禁止とします。
・応募作品のチェックはハル研究所オリジナルの評価環境で行いますが、
問題パッケージに含まれるものと同一のチェックプログラムでの
チェックとなります。
ただし、PC上と評価環境で実行結果が変わる場合があります。
詳しくは「補足」を参照してください。
・応募作品は応募時に自動チェックされますが、後ほど実行委員会が
直接チェックする場合があります。たとえチェックが通っていても、
不適切と認められる場合は無効と判定されることがありますので
ご了承ください。
------------------------------------------------------------------------
補足
------------------------------------------------------------------------
・Init関数、GetNextAction関数の引数のオブジェクトのconstを
キャスト等で外す行為を禁止します。
・上記のようなキャスト等をせずに合法的にアクセスできる
メンバ関数には、自由にアクセスして構いません。
・GetNextAction関数の返すAction型の構造体の値について、
以下の場合は実行時エラーとなります。
・変数 type の表す列挙型の値が ActionType_Wait,
ActionType_Accel のいずれでもない場合。
・変数 value の表す実数値が NaN または ±Inf である場合。
・使用するコンパイラの挙動により、PC上と評価環境で実行結果が
変わる場合があります。
実行委員会では例えば、未初期化変数における初期値の違いや、
関数に渡す引数の評価順序の違い、浮動小数の計算に伴う
誤差によって結果が変わる現象を確認しています。
・乱数のシードは、問題パッケージ内のファイル HPCRandomSeed.cpp に
含まれる DefaultSeedX, DefaultSeedY, DefaultSeedZ, DefaultSeedW
の4つの整数値から決定され、これらを変更することで、プログラムが
いろいろなシードの値で動作するかどうかを確かめることが可能です。
------------------------------------------------------------------------
お問い合わせ先
------------------------------------------------------------------------
ハル研究所プログラミングコンテスト実行委員会