blog.bouzuya.net

2022-05-30 bex 0.1.0 をつくった

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_ix_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) を求める
    • それらから成り立つものを計算して成り立つなら実際に値を設定したものを出力して終わり

今日のコミット。