Advertisement
lillie_

aoc2015day3_rs

Nov 7th, 2019
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.62 KB | None | 0 0
  1. use std::fs;
  2. use std::collections::HashSet;
  3. use std::borrow::BorrowMut;
  4.  
  5. #[derive(Eq)]
  6. #[derive(PartialEq)]
  7. #[derive(Hash)]
  8. struct Coordinate {
  9.     x: i64,
  10.     y: i64
  11. }
  12.  
  13. impl Coordinate {
  14.     fn new(x: i64, y: i64) -> Coordinate {
  15.         Coordinate {
  16.             x,
  17.             y
  18.         }
  19.     }
  20. }
  21.  
  22. fn main() {
  23.     println!("AoC 2015, Day 3");
  24.  
  25.     let string = fs::read_to_string("/home/michelle/AoC_2015/Day_3/input.txt")
  26.         .expect("Error reading the file!");
  27.     let mut set: HashSet<Coordinate> = HashSet::new();
  28.     let mut set_2: HashSet<Coordinate> = HashSet::new();
  29.     let mut santa = Coordinate::new(0, 0);
  30.     let mut santa_2 = Coordinate::new(0, 0);
  31.     let mut robo_santa = Coordinate::new(0, 0);
  32.     let mut is_santa = true;
  33.  
  34.     for i in string.chars() {
  35.         let current = if is_santa {
  36.             santa_2.borrow_mut()
  37.         } else {
  38.             robo_santa.borrow_mut()
  39.         };
  40.  
  41.         match i {
  42.             '^' => {
  43.                 santa.y += 1;
  44.                 current.y += 1
  45.             },
  46.             '>' => {
  47.                 santa.x += 1;
  48.                 current.x += 1
  49.             },
  50.             'v' => {
  51.                 santa.y -= 1;
  52.                 current.y -= 1
  53.             },
  54.             '<' => {
  55.                 santa.x -= 1;
  56.                 current.x -= 1
  57.             },
  58.             _   => ()
  59.         }
  60.  
  61.         is_santa = !is_santa;
  62.  
  63.         set.insert(Coordinate::new(santa.x, santa.y));
  64.         set_2.insert(Coordinate::new(current.x, current.y));
  65.     }
  66.  
  67.     println!("Part 1: {}", set.len());
  68.     println!("Part 2: {}", set_2.len());
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement