AtCoder Beginner Contest 250 B

https://atcoder.jp/contests/abc250/tasks/abc250_b

あえてcharのMatrixみたいなのを作ってそれを表示します。
Matrixを作るには、Iterator::collectを二重に適用すればよいですね。
ただ、そうすると複雑な形になって読みにくいので、closureを使っています。

    let f = |i, j| -> char {
        if (i/A + j/B) % 2 == 0 { '.' } else { '#' }
    };
// Enlarged Checker Board
#![allow(non_snake_case)]

fn read<T: std::str::FromStr>() -> T {
    let mut line = String::new();
    std::io::stdin().read_line(&mut line).ok();
    line.trim().parse().ok().unwrap()
}

fn read_vec<T: std::str::FromStr>() -> Vec<T> {
    read::<String>().split_whitespace()
            .map(|e| e.parse().ok().unwrap()).collect()
}

fn print_table(table: &Vec::<Vec::<char>>) {
    for v in table.iter() {
        let s: String = v.iter().collect();
        println!("{}", s)
    }
}

fn main() {
    let v = read_vec();
    let N: usize = v[0];
    let A: usize = v[1];
    let B: usize = v[2];
    
    let f = |i, j| -> char {
        if (i/A + j/B) % 2 == 0 { '.' } else { '#' }
    };
    let table = (0..(A*N)).map(|i| (0..(B*N)).map(|j| f(i, j)).
                                                    collect()).collect();
    print_table(&table)
}