bouzuya.hatenablog.com

ぼうずやのにっき

初詣 / 仮説 #1 / PAST #2 H

初詣。

さい銭用にコインケースから 5 円を持って行った。 [2022-02-06] に買ったもの。 ATM での小銭の扱いが有料化されるのに合わせて導入した。毎月財布に残っている小銭をコインケースに移す運用にしている。いつでも中身を取り出せる貯金箱。両替に便利。こういうときのために一家に一台くらいはあっていいものだと思った。

上の子が帰り道に 500 円のりんご飴を欲しがった。ぐずりそうな子どもを連れてそばにあったコンビニに入って 100 円と 120 円の菓子を買い、「 500 円のりんご飴を買うのといま買ったお菓子をだいたい 2 個ずつ買うのとどちらが良い? 場による価値もあるから一概には言えないけど」と 500 円で買えるものにもいろいろあることを説明した。


Dev Container の設定を修正した。

https://code.visualstudio.com/remote/advancedcontainers/connect-multiple-containers

どう動いているのかいまだによく分かっていないが、雰囲気で使っている。


仮説 #1

  • スマートフォンを触る割合を減らしてパソコンを触る割合を増やせば、書けるコード量が増える説
  • 観た映画や遊んだゲームの記録を避ければ、そこに掛ける時間の価値が下がる説
  • 最低 15 分はかけて blog 記事を書けば、より良いふりかえりができる説

PAST #2 第二回 アルゴリズム実技検定 過去問

use proconio::{input, marker::Chars};

fn main() {
    input! {
        n: usize,
        m: usize,
        a: [Chars; n],
    };
    let mut b = vec![vec![]; 11];
    for i in 0..n {
        for j in 0..m {
            match a[i][j] {
                'S' => {
                    b[0] = vec![(i, j)];
                }
                'G' => {
                    b[10] = vec![(i, j)];
                }
                _ => {
                    b[(a[i][j] as u8 - b'0') as usize].push((i, j));
                }
            }
        }
    }

    let inf = 1_000_000_000_i64;

    let mut dist = vec![vec![inf; m]; n];
    dist[b[0][0].0][b[0][0].1] = 0;
    for i in 1..=10 {
        let mut next = vec![vec![inf; m]; n];
        for (pr, pc) in b[i - 1].iter().copied() {
            let pd = dist[pr][pc];
            for (nr, nc) in b[i].iter().copied() {
                let nd = pd + (pr as i64 - nr as i64).abs() + (pc as i64 - nc as i64).abs();
                next[nr][nc] = next[nr][nc].min(nd);
            }
        }
        dist = next;
    }

    let ans = dist[b[10][0].0][b[10][0].1];
    let ans = if ans == inf { -1 } else { ans };
    println!("{}", ans);
}

今日のコミット。