bouzuya.hatenablog.com

ぼうずやのにっき

reqwest の gzip feature / PAST #3 F

crates:reqwest v0.11.23 の gzip サポートについて調べた。

reqwest は gzip feature を持っている。

https://github.com/seanmonstar/reqwest/blob/v0.11.23/Cargo.toml#L50

これは response body が gzip で圧縮されていた場合に自動で展開するもの。 request body に対してではなさそう。

https://github.com/seanmonstar/reqwest/blob/v0.11.23/src/lib.rs#L190

async_compression::tokio::bufread::GzipDecoder などを使って展開する。

https://github.com/seanmonstar/reqwest/blob/v0.11.23/src/async_impl/decoder.rs#L6-L7


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

use std::collections::HashSet;

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

fn main() {
    input! {
        n: usize,
        a: [Chars; n],
    };
    if n == 1 {
        println!("{}", a[0][0]);
        return;
    }

    let b = a
        .into_iter()
        .map(|a_i| a_i.into_iter().collect::<HashSet<char>>())
        .collect::<Vec<HashSet<char>>>();
    let mut c = vec![];
    for i in 0..n / 2 + if n % 2 == 0 { 0 } else { 1 } {
        let j = n - i - 1;
        if let Some(x) = b[i].intersection(&b[j]).next() {
            c.push(*x);
        } else {
            println!("-1");
            return;
        }
    }
    let mut ans = c.clone();
    if n % 2 == 0 {
        c.reverse();
        ans.extend(c);
    } else {
        let l = c.len().saturating_sub(1);
        ans.extend(c.into_iter().take(l).rev());
    }
    println!("{}", ans.iter().collect::<String>());
}

今日のコミット。