bouzuya.hatenablog.com

ぼうずやのにっき

『実践 Firestore 』を読んだ / ABC114 C を解いた

たぶん書きそびれているけど 『実践 Firestore 』を読んだ。 SDK のバージョンが変わってしまっているのでソースコード自体は古くなってしまっているけれど、 Firestore における設計の基本的な部分を押さえる意味で良かったように思う。

Firestore の一般的な使い方としては外側に DB が露出しているような状態で、 3 層アーキテクチャ以前のような構成になる。そこで重要なのがセキュリティルールでこれを使って権限はもちろんスキーマなどもチェックする。等々。


use proconio::input;

fn f(n: usize, count: &mut usize, s: &mut Vec<char>) {
    if s.len() >= 3 {
        let x = s.iter().collect::<String>().parse::<usize>().unwrap();
        if x > n {
            return;
        } else if s.iter().any(|c| c == &'3')
            && s.iter().any(|c| c == &'5')
            && s.iter().any(|c| c == &'7')
        {
            *count += 1;
        }
    }

    for c in &['3', '5', '7'] {
        s.push(*c);
        f(n, count, s);
        s.pop();
    }
}

fn main() {
    input! {
        n: usize
    }

    let mut count = 0_usize;
    let mut s = vec![];
    f(n, &mut count, &mut s);
    println!("{}", count);
}

今日のコミット。