Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::fs::File;
- use std::io::{self, prelude::*, BufReader};
- use lazy_static::lazy_static;
- use regex::Regex;
- fn main() -> io::Result<()>{
- let mut board =vec![vec![0u8; 1000]; 1000];
- let file = File::open("input")?;
- let reader = BufReader::new(&file);
- for line in reader.lines() {
- update_board_with_line(&mut board, &line?[..]);
- }
- let overlaps = board.iter().flat_map(|a| a.iter()).filter(|&x| *x > 1).count();
- println!("{}", overlaps);
- Ok(())
- }
- fn update_board_with_line(board: &mut Vec<Vec<u8>>, line: &str) {
- lazy_static! {
- static ref CAPTURE_REGEX: Regex = Regex::new(r"(\d+) @ (\d+),(\d+): (\d+)x(\d+)").unwrap();
- }
- for cap in CAPTURE_REGEX.captures_iter(line) {
- let rect = (&cap[2].parse::<usize>().unwrap(), &cap[3].parse::<usize>().unwrap(), &cap[4].parse::<usize>().unwrap(), &cap[5].parse::<usize>().unwrap());
- for row in *rect.1 .. *rect.3+*rect.1 {
- for col in *rect.0 .. *rect.2+*rect.0 {
- board[row][col] = board[row][col] + 1;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement