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) }