Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. use std::fs::File;
  2. use std::io::{self, prelude::*, BufReader};
  3. use lazy_static::lazy_static;
  4. use regex::Regex;
  5.  
  6. fn main() -> io::Result<()>{
  7.  
  8. let mut board =vec![vec![0u8; 1000]; 1000];
  9.  
  10. let file = File::open("input")?;
  11. let reader = BufReader::new(&file);
  12. for line in reader.lines() {
  13. update_board_with_line(&mut board, &line?[..]);
  14. }
  15. let overlaps = board.iter().flat_map(|a| a.iter()).filter(|&x| *x > 1).count();
  16. println!("{}", overlaps);
  17. Ok(())
  18. }
  19.  
  20. fn update_board_with_line(board: &mut Vec<Vec<u8>>, line: &str) {
  21. lazy_static! {
  22. static ref CAPTURE_REGEX: Regex = Regex::new(r"(\d+) @ (\d+),(\d+): (\d+)x(\d+)").unwrap();
  23. }
  24. for cap in CAPTURE_REGEX.captures_iter(line) {
  25. let rect = (&cap[2].parse::<usize>().unwrap(), &cap[3].parse::<usize>().unwrap(), &cap[4].parse::<usize>().unwrap(), &cap[5].parse::<usize>().unwrap());
  26. for row in *rect.1 .. *rect.3+*rect.1 {
  27. for col in *rect.0 .. *rect.2+*rect.0 {
  28. board[row][col] = board[row][col] + 1;
  29. }
  30. }
  31. }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement