問題概要

問題概要
20×20の盤面が与えられます。

問題概要
20×20の盤面が与えられます。
正方形の範囲を選択して、取得することができます。

問題概要
20×20の盤面が与えられます。
正方形の範囲を選択して、取得することができます。
範囲の取得はゲーム中何度も行うことができます。

問題概要
20×20の盤面が与えられます。
正方形の範囲を選択して、取得することができます。
範囲の取得はゲーム中何度も行うことができます。
取得した範囲に応じて、点数がもらえます。

問題概要
20×20の盤面が与えられます。
正方形の範囲を選択して、取得することができます。
範囲の取得はゲーム中何度も行うことができます。
取得した範囲に応じて、点数がもらえます。
このゲームを何度も繰り返し、合計点数を競います。

取得にかかる時間
1ゲームは 1分です。
→ 500 ms
領域を取得する際、領域の大きさに応じて時間がかかります。
1辺が m の領域を取得するのにかかる時間は、(m+1)*(m+1)*125 [ms]です。

→ 4500 ms

例:m = 1 → 500 ms
m = 2 → 1125 ms
m = 5 → 4500 ms
m = 20 → 55125 ms

点数計算
取得したマスの各4近傍連結成分について、面積 × { (マス価値 / 取得人数)の最小値 }を計算し、その合計が点数になります。
１ゲーム終了時の点数 × スコア倍率 がそのゲームにおけるスコアとなります。
全２４０ゲームでの合計スコアを競います。
※スコア倍率は１ゲーム目は１であり、６０ゲーム毎に１０倍されます。

点数計算 | 例
簡単のため 5×5 の盤面で説明する。

10/1

20/1

15/3

54/3

61/0

各マスには価値が割り当てられている。
取得したマスの価値、取得した人数に応じて点数が決まる。

10/1

10/2

60/1

10/1

94/0

図の x/y は x:マスの価値 y:取得人数 を表す。

50/1

30/1

3/0

98/398/310/110/297/098/398/3

10/1

10/297/098/398/3

点数計算 | 例
簡単のため 5×5 の盤面で説明する。

10/120/1

15/354/361/0

各マスには価値が割り当てられている。
取得したマスの価値、取得した人数に応じて点数が決まる。

10/1

10/260/1

10/194/0

図の x/y は x:マスの価値 y:取得人数 を表す。

50/1

30/1

3/098/398/3

今、色のついたマスをあなたが取得したとする。
4近傍連結成分に注目して 青と赤の領域で考える。

10/1

10/2

97/098/398/3

10/1

10/297/098/398/3

点数計算 | 例
面積：11
最小 : 10/2 = 5

簡単のため 5×5 の盤面で説明する。

10/120/1

15/354/361/0

各マスには価値が割り当てられている。
取得したマスの価値、取得した人数に応じて点数が決まる。

10/1

10/260/1

10/194/0

図の x/y は x:マスの価値 y:取得人数 を表す。

50/130/1

3/098/398/3

今、色のついたマスをあなたが取得したとする。
4近傍連結成分に注目して 青と赤の領域で考える。

10/1

10/2

97/098/3

98/3

10/1

10/2

97/098/398/3

面積：4
最小 : 98/3 = 32.66...

青の領域- 面積: 11- 価値/人数 の最小値: 10/2 = 5
赤の領域- 面積: 4- 価値/人数 の最小値: 98/3 = 32.66..

点数計算 | 例
面積：11最小 : 10/2 = 5

簡単のため 5×5 の盤面で説明する。

10/120/1

15/3

54/361/0

各マスには価値が割り当てられている。
取得したマスの価値、取得した人数に応じて点数が決まる。

10/1

10/2

60/1

10/194/0

図の x/y は x:マスの価値 y:取得人数 を表す。

50/1

30/1

3/098/398/3

今、色のついたマスをあなたが取得したとする。
4近傍連結成分に注目して 青と赤の領域で考える。

10/1

10/2

97/098/3

98/3

10/1

10/2

97/098/398/3

面積：4
最小 : 98/3 = 32.66...

青の領域- 面積: 11- 価値/人数 の最小値: 10/2 = 5

点数は10/2×11 + 98/3×4

赤の領域= 185.66- 面積: 4- 価値/人数 の最小値: 98/3 = 32.66..

点数計算 | 注意点
1ゲーム終了時の点数がそのゲームにおける点数となる
点数計算の「(マス価値 / 取得人数)の最小値」は、ゲームが進行して取得人数が増えると小さくなります。
結果、ゲーム途中よりもゲーム終了時点で点数が下がる場合があります。

スコア倍率
コンテスト後半での逆転要素を残すため、後半になるほど得られるスコアが増える設計になっています。
参加者全員一律で６０ゲーム毎に、得られるスコアが１０倍されます。
1- 60 ゲーム: 1倍
61-120 ゲーム: 10倍
121-180 ゲーム: 100倍
181-240 ゲーム: 1000倍

ポータルサイトの使い方

ポータルサイト | ログイン
ポータルサイトにアクセスします。
UserID と Passwordを入力し、「新規登録」または「ログイン」ボタンをクリックします。

ポータルサイト | トップ
トップ画面のトークンを使用してゲームに参加します。
「再発行」でトークンを更新できます。
あなたのAPI には、トークンを含めたAPIのURL例が表示されています。
「ビジュアライザを開く」をクリックすると、ゲームの進行状態を確認できるビジュアライザが開きます。

ポータルサイト | 質問と回答
運営に質問を送ることができます。
他の人の質問も表示される場合があります。

ポータルサイト | ランキング
自分の順位や、上位のスコアを確認することができます。
ユーザ名をクリックすると、ユーザの対戦ログを確認できます。

ポータルサイト | 対戦ログ
過去のゲームのスコアを確認することができます。
ゲームIDをクリックすると、該当ゲームのランキングが表示されます。

ビジュアライザの使い方ビジュアライザの使い方
進行中のゲームの状態を確認することができます。
手動で範囲を取得することもできるので、ゲームの雰囲気を掴むために一度手動でプレイしてみましょう。
ビジュアライザは bot と同じAPIを使用するため、時間制限に気をつけてください。

ビジュアライザの使い方 | 基本操作
○範囲取得
左クリック + マウス移動○カメラ移動カーソルキーWASDキー
右クリック + マウス移動○カメラ遠近QEキー
マウスホイールビジュアライザの使い方 | 範囲取得
左クリックで範囲を選択し、取得します。取得に成功すると、画面上部にスコアが表示されます。

ビジュアライザの使い方 | UI
進行中ゲームのあなたのスコア

進行中ゲームの残り時間進行中ゲームのランキング

マウスオーバマスの○座標○価値○取得人数表示切り替え
カメラ位置リセット

ビジュアライザの使い方 | 表示切り替え「Num Claims」「Cell Values」にチェックを入れると、各マスの価値や、他人の取得状況を表示するモードに切り替わります。
マスの色：獲得人数
棒の長さ：価値
棒の色：価値÷獲得人数＝点数

色に対応する情報は大きいほど明るい色になりますbotの開発

botの開発 | API仕様
以下の5種類のAPIを使用してゲームに参加します。
GET /api/game
GET /api/stage/<game_id>
GET /api/claim/<token>/<game_id>/<row>-<col>-<size>
GET /api/areas/<token>/<game_id>
GET /api/ranking/<token>/<game_id>
リクエスト、レスポンスの詳細は API仕様 を参照してください。

botの開発 | サンプルコード
サンプルコードを動かしてみよう
以下のURLからサンプルコードをダウンロードして、コード内の token を自分のものに書き換えて実行する。
サンプルコード: https://github.com/KLab/tenka1-2020
C++(& Python), Python, Go, C# のサンプルコードが用意されています。
このコンテストではプログラミング言語の指定はありません。他のプログラミング言語を利用しても問題ないです。