パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Python 最新のCodinGameのコンテスト用AIを90行で作ってみて、使用プログラム技術の簡単な解説

2023-01-12 | 新規1000万人ぐらいにプログラムをマスターしてもらいたい

2時間1画面ほどで、再度新規で作成してみようと開始

 

30分後

 

一画面では無理とあきらめて半日ぐらいかかって完成したもの

クラス設計

3-17 クラス

4-11 初期化メソッド

12-17 メソッド

5 グローバル

8 内包表記

9,10,11 if文

17 積集合

 

作成関数

全部関数

21 ループ

22 内包表記 リスト

27 フォーマット

29 可変長引数

31 タプル

32 while文

33 pop

35 continue ループの次まで飛ばす

43 brake ループを抜ける

 

メインルーチン

61 辞書、辞書、辞書、リスト

70 スライス

79 ソートしてスライスを利用してリストを反転

 

実行結果

最初997位だったのですが22行をちょこっと変えただけで897位まであがりました。

39行目からの関数はまだわりとグダグダで塗りつぶしミスがたまに発生しています。

 

プログラムよりも実はデータ設計の方は大切だったりします。

データ設計

point 地形データをクラスの辞書化 x,y座標を一次元化したpとして辞書のキーとする

bd 位置ごとのデータを簡易文字列化 

mp,op 戦車の位置をリスト化(味方、相手)

spp 戦車の生産可能な場所をスコア付でリスト化

at リサイクラー(絵で見ると地雷っぽいもの)を使って相手戦車を止める場所をリスト化

mlbd,olbd 初回自軍の中心、相手の中心からの最短到達距離を位置ごとにリスト化

 

独自ルールが多くあるので、たぶんサッパリではないかと思いますが、

各行をみてたいしたことないなと思っていただければと公開。

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。