こんな塗りゲー
CodinGame COMMUNITY CONTRIBUTE PAINTEDを遊んでいます
プログラムの初期状態
変数などを使いやすい形に変えロボットをクラス化する
パスファインディングで効果的にぬるルーチンを入れる
15行目のZIPを忘れたらサーバー側でヌルポが発生して、しばらくドツボにハマる
ボスに勝利
サブミットして、はい世界一!
プログラムの解説
2 ロボットのクラス
定義時に解析用に表示もしてみる
9 パスファインディングのAI用の関数
lengまでの長さの上下左右の検索、11行目スタックの情報は (位置 長さ 通った位置達 スコア 動いた方向達)
スコアは相手塗り2点、新規塗り1点、自塗り位置0点として加算していきます
20行で一番ポイントの高かったパスの最初の移動方向を返します
取得データ
21 初期データ取得
プレイヤーのID、チームのID、マップの幅、マップの高さ、テレポート数、ボックス数、ロボット数、各プレイヤーの所持ロボット数
31 マップ情報取得
少し計算しやすいように枠をつけて、空が"E"だと見づらいので"."に変更しています
33 ロボットの情報取得
ID 位置x y オーナー チーム init
他のデータはLevel 1では使われません テレポート数とボックス数は0のため
メインループのAI呼び出し
36 自分のチームのロボットなら一番ポイントの高い手にMOVEさせます
Level4だと、こんな感じに動いてくれます
Level4で動かすには37行目の条件にand r.owner==pidが必要です(なくてもワーニングだしながら、そこはかとなく動きます)
テレポートとかボックスとか何も判定していませんが、Level4でもなんとかなっているみたいです