bouzuya.hatenablog.com

ぼうずやのにっき

markdown-link-helper 0.3.1 をつくった / ABC069 A, B, C, D を解いた

markdown-link-helper 0.3.1 をつくった。 bouzuya/rust-sandbox に置いてある。

markdown-link-helper は指定された Markdown ファイルに含まれる参照リンクのうちリンク参照定義の欠けているものについて、ルールファイルに従って追記すべきリンク参照定義を出力するコマンドラインツール。

分かりにくそうなので具体例で書くと Markdown[2023-01-24] があって [2023-01-24]: https://blog.bouzuya.net/2023/01/24/ が欠けている場合で、ルールファイルに [YYYY-MM-DD]https://blog.bouzuya.net/YYYY/MM/DD/ へと変換するルールが書いてあれば、 [2023-01-24]: https://blog.bouzuya.net/2023/01/24/ を出力する。

0.3.0 から 0.3.1 ではクレートのバージョンアップとドキュメントの更新とテストの追加をした。

そもこれをした経緯は bbn コマンドの機能追加に伴って、 markdown-link-helper で Markdown をどう処理していたかを思い出すため。 crates:pulldown-cmark を使って壊れているリンクを拾っていたようだった。ただ結局 bbn では crates:regex で雑に処理することにした。


ABC069 : AtCoder Beginner Contest 069 の A, B, C, D を解いた。

use proconio::input;

fn main() {
    input! {
        h: usize,
        w: usize,
        n: usize,
        mut a: [usize; n],
    };
    let mut index = 0_usize;
    let mut ans = vec![vec![0_usize; w]; h];
    for i in 0..h {
        let range = if i % 2 == 0 {
            (0..w).collect::<Vec<usize>>()
        } else {
            (0..w).rev().collect::<Vec<usize>>()
        };
        for j in range {
            if a[index] == 0 {
                index += 1;
            }
            ans[i][j] = index + 1;
            a[index] -= 1;
        }
    }

    for i in 0..h {
        for j in 0..w {
            print!("{}{}", ans[i][j], if j == w - 1 { '\n' } else { ' ' });
        }
    }
}

今日のコミット。