Select Git revision
program_info.py
Forked from
Uni-Film-Club / Programm-Info-Bot
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
main.rs 1.43 KiB
#![feature(type_alias_impl_trait)]
mod matrix;
use matrix::Matrix;
use std::fs::read_to_string;
fn main() {
let data = read_to_string("data.txt").unwrap();
let mut datamat = Matrix::new_from_str(&data, |c| (c.to_digit(10).unwrap(), false));
datamat.lines_mut().for_each(|line| {
line.fold(-1, |acc, v| {
if v.0 as i32 > acc {
v.1 = true;
v.0 as i32
} else {
acc
}
});
});
datamat.lines_mut().for_each(|line| {
line.rev().fold(-1, |acc, v| {
if v.0 as i32 > acc {
v.1 = true;
v.0 as i32
} else {
acc
}
});
});
datamat.collumns_mut().for_each(|col| {
col.fold(-1, |acc, v| {
if v.0 as i32 > acc {
v.1 = true;
v.0 as i32
} else {
acc
}
});
});
datamat.collumns_mut().for_each(|col| {
col.rev().fold(-1, |acc, v| {
if v.0 as i32 > acc {
v.1 = true;
v.0 as i32
} else {
acc
}
});
});
datamat.lines().for_each(|v| {
v.for_each(|x| print!("{}", if x.1 { 'A' } else { '_' }));
println!();
});
let visible = datamat.elements.iter().filter(|v| v.1).count();
println!("Visible trees: {visible}");
}