blob: 3e6e9520a0ce9626b9c2cab0fc25036a91a16fd5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
use std::io::{self, BufRead};
fn read_graph(line: String) -> (usize, Vec<Vec<u8>>) {
let mut chars: Vec<u8> = 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<u8>> = 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!("");
}
}
}
|