2023-01-24 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 を解いた。
- A - K-City
https://atcoder.jp/contests/abc069/tasks/abc069_a
- 提出: https://atcoder.jp/contests/abc069/submissions/38302756
(n - 1) * (m - 1)
- B - i18n
https://atcoder.jp/contests/abc069/tasks/abc069_b
- 提出: https://atcoder.jp/contests/abc069/submissions/38302786
println!("{}{}{}", s.first().unwrap(), s.len() - 2, s.last().unwrap());
- C - 4-adjacent
https://atcoder.jp/contests/abc069/tasks/arc080_a
- 提出: https://atcoder.jp/contests/abc069/submissions/38302971
- (a) 4 の倍数 (b) 2 の倍数 (c) そのどちらでもないに分類する
- a なら a, b, c どれでも OK
- b なら a, b なら OK
- c なら a なら OK
- b は 2 個ずつペアにして余ったものの横に a をつけることだけ考えれば良い
- c は端の一個を除いて横に a をつけないといけない
- c と b の余りの和が 1 個を除いて a より少なければ Yes になる
- D - Grid Coloring
https://atcoder.jp/contests/abc069/tasks/arc080_b
- 提出: https://atcoder.jp/contests/abc069/submissions/38303202
- 行の左から右へ、端まで行ったらひとつ下へ、折り返して右から左へ……を繰り返す
- これで上下左右に連結した形になる
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 { ' ' });
}
}
}
今日のコミット。