bouzuya.hatenablog.com

ぼうずやのにっき

調子が悪い

ABC284 の E を解いた。なぜか解けなかった (2023-01-07) DFS するだけの問題。


調子が悪いので早めに寝る。『強いて言えば「集約どう実装するのかな、を考える」会』 https://architect-club.connpass.com/event/272854/ を途中まで観た。


今日のコミット。

2023-W03 ふりかえり

2023-W03 をふりかえる。

2023-W03 の目標 とその記事

目標。

  • ☐ sitemap-xml 0.3.0, 0.4.0 をつくる
  • ☐ 『詳解 Rust プログラミング』を第 4 章まで読み進める

記事。

つくったもの

その他

よんだもの。

(なし)

みたもの。

(なし)

勉強会。

おでかけ。

(なし)

ゲーム。

  • フィットボクシング 2 31 + 1 + 111 + 55 + 7 日目 (2 + 2 + 2 + 1 日抜け)

買い物。

(なし)

体調。

  • 疲れている

育児。

  • 上の子は 2023-01-15 に書いた水中モーターで遊んでいる
  • 下の子は 1 から 10 までの数字をなんとなく言えるようになっている

2023-W03 はどうだったか。

いろいろあって疲れている。イベント参加もイマイチ増やせず、目標も達成できず、なかなかつらい。

マイナンバーカードをつくった (2023-01-20) 。

sitemap-xml は保留している。 reader の仕様に迷いが出てしまった。 writer までで止めてしまっても実用上は問題なさそうなのだけど……。代わりに bouzuya/rust-sandbox の bbn を直している。これは GitHub リポジトリのセキュリティ警告を消そうかと思い bouzuya/kraken を直そうとしたら、互換性が壊れるようになっており、どうせなら Rust で書き直そうと思い切った形。 JSON の出力を進めているが、 sitemap.xml の出力も来週にはできると思う。

AtCoder は ABC286 に参加した (2023-01-21) 。 1201 → 1213 (+12) (https://atcoder.jp/users/bouzuya/history/share/abc286) 。先週の ABC285 には参加できなかったので 1 週空いている。緑に落ちるかなと思ったけど、意外とプラスになっていた。

ラジオ体操・懸垂・フィットボクシング 2 を続けている。

バタついているので目標は控えめにする。

2023-W04 の目標

  • bbn コマンドでの JSON ・ sitemap.xml 出力に対応する

Rustオンラインもくもく会 #179 に参加した

Rustオンラインもくもく会 #179 https://rust-online.connpass.com/event/272197/ に参加した。

bouzuya/rust-sandbox の bbn の直しをしている。経緯としては 2023-01-19 にある。 bbn に JSON を出力する機能を追加して bouzuya/kraken を廃止したいと考えている。


ABC286 に参加した。ぎりぎり緑に落ちそう。 E の問題文を読み間違えていて、最短経路の中から土産の良いものを選べばいいだけのところを、すべての経路から土産の良いものを探していた。ひどい。


今日のコミット。

ABC178 の A, B, C, D を解いた / マイナンバーカードを受け取った

ABC178 : AtCoder Beginner Contest 178 の A, B, C, D を解いた。

use modint::ModInt1000000007 as ModInt;
use proconio::input;

fn main() {
    input! {
        s: usize,
    };
    let mut dp = vec![ModInt::new(0); s + 1];
    dp[0] = ModInt::new(1);
    for i in 1..=s {
        for j in 0..i.saturating_sub(2) {
            dp[i] = dp[i] + dp[j];
        }
    }
    let ans = dp[s];
    println!("{}", ans);
}

// modint

マイナンバーカードを受領した。役所は平日のみなので困る。積極的につくりたくはなかったのだけど、避けられなさそうな気がしたので、どうせならポイントをもらえるうちにと思って作成した。

Pixel 7 は大きいのでカバーの背面にリングをつけているのだけど、その状態だと読み込めなくて体験が悪い。 Pixel 7 のサイズが悪い。


友人のアイコン画像について「いまさらだけどそのアイコン何?」と聞いたら、前にも聞かれたぞと言われて、調べたら 2 年前に聞いていた。ボケている……。怖い。


今日のコミット。

ABC094 の A, B, C, D を解いた / セキュリティアップデートしようとしている

ABC094 : AtCoder Beginner Contest 094 の A, B, C, D を解いた。

use proconio::input;

fn main() {
    input! {
        n: usize,
        mut a: [i64; n],
    };
    a.sort();

    let x = a[n - 1];
    let mut k = (a[0], (x - 2 * a[0]).abs());
    for a_i in a.into_iter().take(n - 1) {
        let d = (x - 2 * a_i).abs();
        if d <= k.1 {
            k = (a_i, d);
        }
    }
    println!("{} {}", x, k.0);
}

セキュリティアップデートをしようと思い、 bouzuya/blog.bouzuya.net の依存関係のバージョンを上げたら、まずいのは bouzuya/kraken だと言われ、 kraken の依存関係のバージョンを上げたら出力結果が変わったので面倒になってきた。もうメンテナンスするつもりがないので、いまの出力結果と同じになるものを Rust で書き直すつもりで居る。 HTML 側は面倒だけど JSON 側は比較的容易なはず。


今日のコミット。

ABC038 の A, B, C, D を解いた

ABC038 : AtCoder Beginner Contest 038 の A, B, C, D を解いた。

use std::cmp::Reverse;

use proconio::input;
use segtree::*;

fn main() {
    input! {
        n: usize,
        mut wh: [(usize, usize); n],
    };
    wh.sort_by_key(|&(w, h)| (w, Reverse(h)));

    let mut st = Segtree::<Max<usize>>::new(100_000 + 1);
    for (_, h) in wh.into_iter() {
        st.set(h, st.prod(0, h) + 1);
    }
    let ans = st.all_prod();
    println!("{}", ans);
}

// segtree

今日のコミット。

体調が悪いので一回休み

体調が悪いので一回休み。


子どもが保育所阪神淡路大震災の際の話を聞かされたようなのだけど、「きょうほいくしょがかじになった」を連呼するばかりで震災のときの話をされたという文脈がなかったので、それに気づくまで「保育所が火事ってどういうこと……? ボヤがあったらさすがに保護者に一言あるはずだけどそれがないってどういうこと……?」となっていた。


今日のコミット。