bouzuya.hatenablog.com

ぼうずやのにっき

bouzuya/firestore-structured-query 0.6.1, 0.6.2 / PAST #4 D

bouzuya/firestore-structured-query 0.6.1 および 0.6.2 をつくった。

  • Order に Clone などの実装を追加した
  • ドキュメントを追加した

CHANGELOG tests は https://github.com/bouzuya/firestore-structured-query/blob/427f495dd2db075e6eed53c7b6ee80e6e68262e0/tests/v0_6_1.rs にある。

ドキュメントは https://docs.rs/firestore-structured-query にある。

サンプルコードがほとんどではあるけどそれなりの量のドキュメントを書いている。はっきり言ってドキュメントのせいでコードを書きづらい。

ただ利用者側からするとドキュメントコメントに使用例があると嬉しいのは確かだし、テストコードをいくら書いてもほとんどの人はリポジトリまで見に来ない。テストを兼ねた使用例を重視するのは良さそうだと思っている。実行時間に難があることや↑のようにコメントに埋もれてしまうことから利用者はともかく開発者の体験としてはあまり良くないけど……。

CHANGELOG tests と勝手に読んでいる CHANGELOG っぽいテストも引き続き書いている。しばらくは継続してみるつもりで居る。


同僚が技術記事を書いている。記事とサンプルコードのレビューをした。サンプルコードがまともに動かないのでいくつかの Pull Request をするつもりで居る。


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

use std::collections::VecDeque;

use proconio::input;

fn main() {
    input! {
        _n: usize,
        s: String,
    };
    let mut ss = s.split('#').collect::<VecDeque<&str>>();
    let min_x = ss.pop_front().unwrap().len();
    let min_y = ss.pop_back().unwrap().len();
    let max = ss.iter().fold(min_x.max(min_y), |acc, x| {
        acc.max(x.len().saturating_sub(min_x.min(min_y)))
    });
    let (x, y) = if min_x > min_y {
        (max, min_y)
    } else {
        (min_x, max)
    };
    println!("{} {}", x, y);
}

今日のコミット。