bex 0.1.0 をつくった (https://github.com/bouzuya/rust-sandbox/tree/bex/0.1.0/bex) 。
bex は Pocket (https://getpocket.com/) の未読を減らすための CLI 。
crates:clap でコマンドやオプションを解釈して crates:reqwest で HTTP リクエストを送信して crates:serde_json で HTTP レスポンスを解釈して標準出力に書き込む。
その他は OAuth っぽい認証をなんとかするために crates:axum でコールバックを受けている。 crates:xdg で得た XDG_STATE_HOME に認証情報を保存している。
使用する場合は Pocket の App をつくって Consumer Key を得る必要がある点が面倒だ。
0.2.0 をつくるとすればオフラインキャッシュをつける。 SQLite に適当に突っ込んで最新情報の取得などのみにする。 Rate Limits の配慮ができていないのが気になる。
ARC135 : AtCoder Regular Contest 135 の B を解いた。
- B - Sum of Three Terms
https://atcoder.jp/contests/arc135/tasks/arc135_b
- 提出: https://atcoder.jp/contests/arc135/submissions/32110182
- 解説 AC
- A_1, A_2 を決めてやれば A が一意になるのは見えた
A_1 = X
,A_2 = Y
,A_3 = S_1 - X - Y
と書き出してはみた- そこから進めず解説へ
A_1 = a
,A_2 = b
とするとA_i
はx_i + a
,x_i + b
,x_i - a - b
が繰り返される形になる0 <= A_i
から-x_i <= a
のように変形できる- 同様に
-x_i <= b
,a + b <= x_i
- これらを満たす
a
b
を求める問題になる A_1 = 0
,A_2 = 0
と仮に置いてx_i
を求めるi
の mod 3 の値ごとにMIN(x_i)
を求める- それらから成り立つものを計算して成り立つなら実際に値を設定したものを出力して終わり
今日のコミット。