diff --git a/answers/3d/1.txt b/answers/3d/1.txt new file mode 100644 index 0000000..5ac23dd --- /dev/null +++ b/answers/3d/1.txt @@ -0,0 +1,9 @@ +. > . > . . . +^ 1 . 1 * S . +A # . * . . . +. . v . > . . +. . . . 2 @ 3 +. 1 + . . 3 . +. . . . . . . +. 1 @ 6 . . . +. . 3 . . . . \ No newline at end of file diff --git a/answers/3d/2.txt b/answers/3d/2.txt new file mode 100644 index 0000000..bf031e0 --- /dev/null +++ b/answers/3d/2.txt @@ -0,0 +1,7 @@ +. 1 . . . +A + . . . +. . . . . +A % . . A +. . > . * +-1 # S . S +. . . . . \ No newline at end of file diff --git a/answers/3d/3.txt b/answers/3d/3.txt new file mode 100644 index 0000000..fee6a8c --- /dev/null +++ b/answers/3d/3.txt @@ -0,0 +1,7 @@ +. . . . 0 . +. A > . = S +1 + . . . . +. . . . . . +A % . . A . +. . > . / . +-1 = S . S . \ No newline at end of file diff --git a/answers/3d/4.txt b/answers/3d/4.txt new file mode 100644 index 0000000..2efa394 --- /dev/null +++ b/answers/3d/4.txt @@ -0,0 +1,42 @@ +// A, B が異符号の場合 +// 最大 10 tick 必要 +. B . 1 . +A * . + . +. . v . . +. . . % . +. . . . . +. . -1 = . +. . < . . // ここから A の符号を求める、左の分岐は A が正の場合 +. v A - . +. . . . . +. v A % . +. . . . . +. v -1 = . +. . . . . // ここから下が実行されるのは A が負 +1 + 1 + . +. . . . . +A + B + S +. S . . . + +// A, B が正 +// 11 tick 目に timewarp させるため最初は遅らせる +A > . > . > . . B > . > . > . +. . . . . . v . . . . . . . v +. . . < . < . . . . . < . < . . +. . v 1 . 0 . B . . v 1 . 0 . A +. . . - . = . + . . . - . = . + +. . . . v . . S . . . . v . . S +. . . < . . . . . . . < . . . . +. 0 @ 3 . . . . . 0 @ 3 . . . . +. . 3 . . . . . . . 3 . . . . . + +// A, B が負 +A > . > . > . . B > . > . > . +. . . . . . v . . . . . . . v +. . . < . < . . . . . < . < . . +. . v 1 . 0 . A . . v 1 . 0 . B +. . . + . = . + . . . + . = . + +. . . . v . . S . . . . v . . S +. . . < . . . . . . . < . . . . +. 0 @ 3 . . . . . 0 @ 3 . . . . +. . 3 . . . . . . . 3 . . . . . \ No newline at end of file diff --git a/answers/3d/5.txt b/answers/3d/5.txt new file mode 100644 index 0000000..30d2d54 --- /dev/null +++ b/answers/3d/5.txt @@ -0,0 +1,11 @@ +// continue: 6 tick +// end: 6 tick +. . . < . < B > . > . > . . +. 0 = . . A > . % . . . v . +. . . . . v . . . v . . . . +. . v . < . . . < . . . v . +. . . + . . . v . . . . . . +. B . . . . . . > . . . v . +A * . / S . . . 3 @ 6 . . . +. . . . . . . . . 6 . 7 @ 6 +. . . . . . . . . . . . 6 . \ No newline at end of file diff --git a/answers/3d/6.txt b/answers/3d/6.txt new file mode 100644 index 0000000..4910f72 --- /dev/null +++ b/answers/3d/6.txt @@ -0,0 +1,8 @@ +. . . . 1 . . . . 2 . +. 2 > . + . > . A = . +A % . . . . . v . . / +. . . A = . . . . . S +. v . . . . 6 @ 3 . . +. . . A / S . 4 . . . +0 = . . . . . . . . . +. S . . . . . . . . . \ No newline at end of file diff --git a/answers/3d/7.txt b/answers/3d/7.txt new file mode 100644 index 0000000..72dddb0 --- /dev/null +++ b/answers/3d/7.txt @@ -0,0 +1,14 @@ +. . . . . . . 10 . . . . +. > . > . > . * . > . . +^ . < A . . . . . . v . +. v . . . . . . 10 . . . +^ . > . > . > . % . + . +. . 0 = . v 10 . . . . . +^ . . . . . / . . 10 @ -1 +0 > . + . . . > . . 10 . +. . < . . . . . v . . . +0 * A = . . . . . . . . +. . . . / . . . v . . . +. v . . S . . . . > . . +. S . . . . . . . 7 @ 10 +. . . . . . . . . . 10 . \ No newline at end of file diff --git a/notes/a01sa01to.md b/notes/a01sa01to.md index 983a532..824012e 100644 --- a/notes/a01sa01to.md +++ b/notes/a01sa01to.md @@ -115,3 +115,218 @@ You scored some points for looking at the scoreboard! You can also do `get score をしようとしたがコードリーディングで終わり 眠いので寝る + +## day 2 + +09:50 起きた + ご飯食べたので再開 + +実装がすでに終わっているようなので進捗を見る。 +spaceship の intro を読む。 +どうやら 10 キーの数字の位置が移動を表しているらしい。 + +```text +7 8 9 +4 5 6 +1 2 3 +``` + +上から 1 行目: vy +1 +上から 2 行目: vy ±0 +上から 3 行目: vy -1 +左から 1 列目: vx -1 +左から 2 列目: vx ±0 +左から 3 列目: vx +1 + +めんどくさーい +でもこどげに同じような問題があった気がする、火星のやつ: +なにか使えるかも? + +lambdaman も読む。 +あー経路探索ねぇ これは解けそうな気がする +いったんデータ全ダウンロードする。 +level 6 の DL で stackoverflow してる、なぜ? + +```text +B. SF B$ B$ L" B$ L" B$ L# B$ v" B$ v# v# L# B$ v" B$ v# v# L$ L# ? B= v# I" v" B. v" B$ v$ B- v# I" Sl I#, +``` + +あー parse 部分で default で node そのまま返してるせい? +いったん飛ばして lambdaman を手作業で解いてみる +(根を lambdaman の初期位置として決めて ~~木 dp とかすればいいのかも、なんか前に AtCoder で見たような: (似てるのはこれだが、今回は瞬間移動できない)~~ 木じゃないからダメ) + +とりあえず lambdaman 1, 2 を解いた。 +3 以降はプログラム的に最適解を求めたほうがよさそう。 (実装思いついてないので後でやる) + +ほかの問題もダウンロードしちゃう。 +3d, efficiency と思ったがまだできないらしい。 + +spaceship の 2 が最適じゃなかったっぽいので適当に手作業で直した。 + +ごはん + JAG 模擬国内予選ぞいぞい + +## day 3 + +いろいろあって day 2 はあのまま終了。 + +14:00 やるか +3d, efficiency が開放されたので見てみる。 + +3d 読んだ。めっちゃおもしろそう。 +3d1 を試しにやってみる。 + +15:32 解けた。 17433 点。 +ベストが 4800 なのでもっと減らせるらしい。まじ? + +```text +. . . . . 1 . . . +A > . > . = . . . +v 1 . . . . > . . +. - . . A > . * S +. . . . v . . . . +. v . . . . . . . +. . > . * . . . . +. v . . . . . . . +. . . 0 @ 5 . . . +. v . . 5 . . . . +. . . . . . . . . +1 @ 10 . . . . . . +. 5 . . . . . . . +``` + +カウントアップしていったほうが短くなりそう? +書いた ↓ +score = 6300 えー + +```text +. > . > . . . +^ 1 . 1 * S . +A # . * . . . +. . v . > . . +. . . . 2 @ 3 +. 1 + . . 3 . +. . . . . . . +. 1 @ 6 . . . +. . 3 . . . . +``` + +いったん 3d2 に移動。 +2550 、これで 16 位なの?えー + +```text +. 1 . . . +A + . . . +. . . . . +A % . . A +. . > . * +-1 # S . S +. . . . . +``` + +3d3: 3738 + +```text +. . . . 0 . +. A > . = S +1 + . . . . +. . . . . . +A % . . A . +. . > . / . +-1 = S . S . +``` + +18:30 ようやく 3d4 が解けた: 157920 点。やばすぎる。 +ちょっと直して 150640 点。たすけて~ + +```text +. B . 1 . +A * . + . +. . v . . +. . . % . +. . . . . +. . -1 = . +. . < . . +. v A - . +. . . . . +. v A % . +. . . . . +. v -1 = . +. . . . . +1 + 1 + . +. . . . . +A + B + S +. S . . . +A > . > . > . . B > . > . > . +. . . . . . v . . . . . . . v +. . . < . < . . . . . < . < . . +. . v 1 . 0 . B . . v 1 . 0 . A +. . . - . = . + . . . - . = . + +. . . . v . . S . . . . v . . S +. . . < . . . . . . . < . . . . +. 0 @ 3 . . . . . 0 @ 3 . . . . +. . 3 . . . . . . . 3 . . . . . +A > . > . > . . B > . > . > . +. . . . . . v . . . . . . . v +. . . < . < . . . . . < . < . . +. . v 1 . 0 . A . . v 1 . 0 . B +. . . + . = . + . . . + . = . + +. . . . v . . S . . . . v . . S +. . . < . . . . . . . < . . . . +. 0 @ 3 . . . . . 0 @ 3 . . . . +. . 3 . . . . . . . 3 . . . . . +``` + +19:05 3d5 解けたと思ったが tick limit に引っかかってるらしい。 +visualizer ないとさすがにきつすぎるので作る。 + +20:55 ごはんたべた。 visualizer も (たぶん) できた。これでデバッグがしやすくなるぞい +3d2 みたかんじ、なんかコーナーケースが -1, -2 で発生してるのに気づいたのはここだけの話。 + +21:33 3d5 解けた~ 21168 + +```text +. . . < . < B > . > . > . . +. 0 = . . A > . % . . . v . +. . . . . v . . . v . . . . +. . v . < . . . < . . . v . +. . . + . . . v . . . . . . +. B . . . . . . > . . . v . +A * . / S . . . 3 @ 6 . . . +. . . . . . . . . 6 . 7 @ 6 +. . . . . . . . . . . . 6 . +``` + +22:04 3d6 も解けた、コーナーケース (2) に殺された。。。 + +```text +. . . . 1 . . . . 2 . +. 2 > . + . > . A = . +A % . . . . . v . . / +. . . A = . . . . . S +. v . . . . 6 @ 3 . . +. . . A / S . 4 . . . +0 = . . . . . . . . . +. S . . . . . . . . . +``` + +22:44 3d7 49896 + +```text +. . . . . . . 10 . . . . +. > . > . > . * . > . . +^ . < A . . . . . . v . +. v . . . . . . 10 . . . +^ . > . > . > . % . + . +. . 0 = . v 10 . . . . . +^ . . . . . / . . 10 @ -1 +0 > . + . . . > . . 10 . +. . < . . . . . v . . . +0 * A = . . . . . . . . +. . . . / . . . v . . . +. v . . S . . . . > . . +. S . . . . . . . 7 @ 10 +. . . . . . . . . . 10 . +``` + +3d8 難しそうなのでいったん 9 をみる +難しいよ~撤退 +24:14 diff --git a/visualizer-3d/main.js b/visualizer-3d/main.js index a6d0fef..47b890b 100644 --- a/visualizer-3d/main.js +++ b/visualizer-3d/main.js @@ -265,7 +265,7 @@ window.addEventListener("DOMContentLoaded", () => { } if (dts !== undefined) { - if (turn - dts >= 0) { + if (turn - dts - 1 >= 0) { const [dt, darr] = GridTimeArr[turn - dts - 1]; next = Array.from({ length: h }, () => Array.from({ length: w }, () => ".")); for (let i = 0; i < h; i++) { @@ -301,6 +301,10 @@ window.addEventListener("DOMContentLoaded", () => { nextt = dt; } + else { + err.textContent = `Invalid move at time ${turn}: Invalid dt`; + return; + } } GridTimeArr.push([nextt, next]);