use std::io::{self, BufRead}; fn read_graph(line: String) -> (usize, Vec>) { let mut chars: Vec = Vec::new(); for character in line.chars() { chars.push((character as i32 - 63) as u8); } // TODO: spec allows multi-byte vector size let n = chars[0] as usize; let bytes = &chars[1..]; let mut mat: Vec> = vec![vec![0; n]; n]; let mut i = 0; for col in 1..n { for row in 0..col { let bit: u8 = bytes[i / 6] >> (5 - i % 6) & 1; mat[row][col] = bit; mat[col][row] = bit; i += 1; } } return (n, mat); } fn main() { let stdin = io::stdin(); for line in stdin.lock().lines() { let (n, mat) = read_graph(line.unwrap()); println!("Vector of size {}", n); for row in 0..n { for col in 0..n { print!("{} ", mat[row][col]); } println!(""); } } }