-
Notifications
You must be signed in to change notification settings - Fork 0
/
memo.txt
155 lines (97 loc) · 4.87 KB
/
memo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
2019/06/21
環境変数
- AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY
- TASKNAME
- TIMELIMIT
- DB_URL, DB_USER, DB_PASS
alpine上でinstallしたcrystalがまともに動かん
https://github.com/sam0x17/crystal-alpine
を参考に色々ライブラリ足した(alpineを使っている意味が…)
→やっぱりサイズでかくなってしまって意味がないのでベースイメージはcrystalのものを使おう
DBテーブル定義
CREATE TABLE results (
id INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
task VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL,
score INTEGER UNSIGNED NOT NULL,
commands MEDIUMTEXT,
options JSON DEFAULT NULL
);
2019/06/22 12:18
AWS BatchでS3からソースコード取得→実行→結果をRDSに入れる
までできた
AWS ACCESS KEY系はIAM Roleでやるから渡す必要なかった
AWS BatchにどうやってDBの認証情報渡せばいいんだ…ソースコード内には書きたくないが
よくわからんので仕方ないがプレインテキストの環境変数かなあ
手元からジョブを投げられるようにする
12:50
投げることはできた
https://qiita.com/aokad/items/aed8034fb087a6bf99c3
が、RUNNABLEから動かない…
スポットリクエスト作られてないなあ→数分待ったら作られた
OK
ごはん
13:52
テストケースのビジュアライズしよっと
その前にまずはパースやな
17:00
とりあえずのパーサはできた。
テストケースの情報もDBに入れとこう
CREATE TABLE tasks (
name VARCHAR(255) PRIMARY KEY NOT NULL,
height INTEGER UNSIGNED NOT NULL,
width INTEGER UNSIGNED NOT NULL,
empty INTEGER UNSIGNED NOT NULL,
booster_b INTEGER UNSIGNED NOT NULL,
booster_f INTEGER UNSIGNED NOT NULL,
booster_l INTEGER UNSIGNED NOT NULL,
booster_x INTEGER UNSIGNED NOT NULL,
booster_r INTEGER UNSIGNED NOT NULL,
booster_c INTEGER UNSIGNED NOT NULL
);
MySQLのデフォルトのCOLLATIONって latin1_swedish_ci ってやつなのか
300ケースの満点スコア出してみたら 4219281.834526764 だった
18:50
順位表データをとりあえず10分おきに取得しておこう
LambdaのトリガーにCloudWatch Eventを使おうとしたらスケジュールのcronで曜日フィールドに*を使えない仕様にちょっとハマった
19:40
最後のルール読んだが下位チームには何の影響もないやつだった
ふつうにソルバーをつくろう
テストデータの画像化やっとくかな
→Crystalによさげな画像処理ライブラリがないのでやっぱやめた
21:47
粛々と最初のgreedyソルバを実装する。
明日の昼過ぎぐらいまでにできてるといいな
12:43
昼過ぎまで寝てしまったね
AWS Batchでの実行は1テストケースだけにしてたけど複数まとめてできた方が良いと思うので範囲で指定できるようにしよう
そのうち。
visible判定、これっぽいの前にマラソンマッチでやったなあ
21:14
ひととおりソルバできた。ビジュアライザで見るとめっちゃ頭悪い感じだけどとりあえずvalidな解は出してるっぽい。
10ケースx30ジョブでキューに投げてみる
→ちゃんと並列で実行してくれてる。楽しい
24:00
RDSからベストスコアのやつを取ってきてzipにするのを書いた。
サブミットした。満点の半分ほど取っててなんだか思いのほか高いスコアだ
公式が各ケースの生スコアを教えてくれるのをサブミットしてみて初めて知った。手元と同一っぽい。よかった。
Fを使うのを実装する
25:00
F使った。継続時間の仕様が思ってたのと1ずれててちょっとハマった。
そこまで劇的に良くはならず。
ドリルを使うより先に、wrapする順序を賢くして塗り残しをなくすのをやった方がよさそう
26:00
…とその前にジョブに投げてた奴らが死んでる。
wheel使ったとき、残りが狭い通路の向こうにあるとスピードアップした状態では通り抜けられなくて到達不可能になってた。
そのような場合は近づく向きに移動するよう修正
prob-001 がめっちゃ小さいので手で作った
28:00
boosterを積極的に取りに行くようにするとだいぶ良くなっている
サブミットしてみたらたくさんfailが出た…
回転して移動パターンでcreate_planをするときにwheelの継続時間が回転した分短くなるんだなあ
ついでにアホみたいなバグも見つかってくれて結果オーライな感じ
各ケース20分ずつ実行するバッチを流して寝る
2019/06/24
塗り残しをなくすような感じのことをやってたらバグはまりしまくった
公式ビジュアライザだけでやるのつらい
drill使うか…