bouzuya.hatenablog.com

ぼうずやのにっき

ARC140 の B を解いた

ARC140 : AtCoder Regular Contest 140 の B を解いた。

  • B - Shorten ARC https://atcoder.jp/contests/arc140/tasks/arc140_b
    • 提出: https://atcoder.jp/contests/arc140/submissions/32319514
    • R に A, C が隣接していないケースを忘れて 1WA
    • 奇数回目の操作は R を残して R の左の A 右の C を消す ARC → R
    • 偶数回目の操作は R を消す ARC → AC
    • 操作回数を最大にしたい
    • 操作には R が必要なので R を残せるよう奇数回目の操作を多くしたい
    • R に隣接する A, C が各 1 個の場合には偶数回目に選んでも良い (R を残しても操作回数は増えない)
    • 各 R の左の A と 右の C の個数の MIN を取る (これの総和が奇数回目の操作だけを繰り返したときの最大の操作回数になる)
    • この数列を B とする
    • B を deque に詰め替える 1 個のものを前に 2 個以上を後ろに入れる
    • 奇数回目には後ろから出して 2 個以上残っているなら後ろに 1 個なら前に入れ直す
    • 偶数回目には前から出して捨てる
    • deque から出した回数が最大の操作回数になる
    • 解説では min(2M, \sum{x_i}) で求めているがこれは思いつかない

自力 AC はひさしぶりな感じがする。


『 101 匹わんちゃん』を観た。子どもの頃以来だと思う。子犬がかわいい。白黒の犬を雪景色に置くのはどうなんだ。


電源コードにひっかけて抜いてしまった。椅子を変えてからコードに当たりそうだなとは思っていたのだけど……。束ねて整理した。


今日のコミット。

ARC118 B を解いた / 集約間では外部キーを設定しない

ベイマックス』を観た。


集約 (をまたぐテーブル) 間は外部キーを設定しないほうが良さそう。

  • 前提 1: リポジトリは永続化の実装を隠すものである
  • 前提 2: リポジトリは集約ごとに作成するものである
  • 前提 3: 永続化の実装が同一でなければ外部キーを設定できない
  • 集約 (をまたぐテーブル) 間で外部キーを設定できると仮定する
  • 外部キーを設定できるのであれば永続化の実装が同一である (前提 3 の対偶)
  • 集約 (をまたぐテーブル) 間では別リポジトリである (前提 2)
  • リポジトリ間で永続化の実装が同一でなければならないが、永続化の実装を隠す (前提 1) と矛盾する
  • よって集約をまたぐテーブル間で外部キーを設定できない

うれしい点としてリポジトリのテストで別集約別リポジトリを使って初期化などをせずに済む。これについては外部キーを無効化するなどの手もあるだろうけど……。


bouzuya/rust-sandbox の its を使っている。 Issue の件数が 1000 件を超えた。


ARC118 B を解いた。解説 AC 。二分探索できるところは分かったのだけどいくつかの「言い換え」が自分では思いつかなかった。


今日のコミット。

ARC141 の B を解いた

ARC141 : AtCoder Regular Contest 141 の B を解いた。


event store は event を順に読む必要があるので、時間や連番を振っておいたほうが良さそう。

時間の場合はアプリケーションサーバー側から設定するものではなく DB サーバー側などで設定したほうが良い。時刻がずれていないとは言い切れないので。また同一値になる可能性もあるので連番のほうが良さそうだと思っている。 bouzuya/rust-sandbox の its ではひとまず events.seq として列を追加した。

EventStreamId と EventStreamSeq で一意になれば良いかなと思っていたのだけど Id 指定したいことが多いように思ったので EventId も振るようにしている。

events(seq, id, event_stream_id, event_stream_seq, data)


今日のコミット。

2022-W22 ふりかえり

2022-W22 をふりかえる。

2022-W22 の目標 とその記事

目標。

  • ☐ 2022-05 ふりかえりを書く
  • tokio tutorial を読む
  • ☑ bex 0.1.0 をつくる

記事。

つくったもの

よんだもの

(なし)

tokio tutorial を途中まで進めている。

みたもの

その他

勉強会。

(なし)

おでかけ。

(なし)

ゲーム。

買い物。

  • バスタオル (2022-06-01)
  • コールマン インフィニティチェア

体調。

(なし)

育児。

  • 上の子は絵本をゆっくりだが読んでいる
  • 下の子はヒューマンフォールフラットのキャラクターみたいなバランスで歩いている

2022-W22 はどうだったか。

2022-06 になった。

AtCoder は ABC254 で 1218 (+12) と水色を維持した (https://atcoder.jp/users/bouzuya/history/share/abc254) 。毎日 ABC の過去問題を解いている。

プログラミング Tips っぽいもの。

  • IS NULL にインデックスが効く (2022-05-31)

朝・夜のコミットを続けている。 rust365 (2022-02-19) は bex 0.1.0 をつくった。 its に戻ってきている。 iko も経由したのでいろいろ思い出している。

『 Slay the Spire 』の実績をコンプリートした。ひとまずクリアとする。『リングフィットアドベンチャー』は称号コンプリートに向けてアシパカパカと扇のポーズを続けている。

2022-W23 の目標

  • 2022-05 ふりかえりを書く
  • tokio tutorial を読む
  • 椅子のことを書く

Slay the Spire の実績をコンプリートした

Slay the Spire の実績をコンプリートした。

今日で「スピードクライミング」「消えゆく者」「永遠の存在」を取得して Slay the Spire の実績 46 個をコンプリートした。

スピードクライミングアイアンクラッドで旋風刃を瓶詰めしたネクロノミコン持ちのデッキでクリアした。慌ただしいのはつらかった。

これで一応のクリアということにしようかと思っている。

時間があればアセンション 20 堕落の心臓を目指したりアイアンクラッド以外でのそれらを目指すのもありなんだろうけど……。


ABC254 に参加した。まだ結果が出ていないけどおそらく水色は維持できていると思う。


今日のコミット。

ARC133 の B を解いた

ARC133 : AtCoder Regular Contest 133 の B を解いた。


今日のコミット。

ARC136 の B を解いた / Slay the Spire アイアンクラッドでアセンション 20 をクリアした

ARC136 : AtCoder Regular Contest 136 の B を解いた。


Slay the Spire 。アイアンクラッドアセンション 20 をクリアした。これで残りの実績は 2 つ。 20 分未満でのクリアと消えゆく者を倒すというもの。


今日のコミット。