parent
4af822d729
commit
b6ff7fb54b
@ -0,0 +1,9 @@ |
||||
[package] |
||||
name = "day24" |
||||
version = "0.1.0" |
||||
authors = ["inga-lovinde <52715130+inga-lovinde@users.noreply.github.com>"] |
||||
edition = "2018" |
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html |
||||
|
||||
[dependencies] |
@ -0,0 +1,35 @@ |
||||
use std::collections::HashSet; |
||||
use std::io::{self, BufRead}; |
||||
|
||||
fn main() { |
||||
let stdin = io::stdin(); |
||||
let mut changed_tiles = HashSet::new(); |
||||
for line_result in stdin.lock().lines() { |
||||
let processed_line = line_result.unwrap().replace("nw", "7").replace("ne", "9").replace("sw", "1").replace("se", "3"); |
||||
let mut x = 0; |
||||
let mut y = 0; |
||||
for ch in processed_line.chars() { |
||||
x += match ch { |
||||
'e' => 2, |
||||
'w' => -2, |
||||
'9' | '3' => 1, |
||||
'7' | '1' => -1, |
||||
_ => 0, |
||||
}; |
||||
y += match ch { |
||||
'9' | '7' => 1, |
||||
'3' | '1' => -1, |
||||
_ => 0, |
||||
}; |
||||
} |
||||
|
||||
let tile = (x, y); |
||||
if changed_tiles.contains(&tile) { |
||||
changed_tiles.remove(&tile); |
||||
} else { |
||||
changed_tiles.insert(tile); |
||||
} |
||||
} |
||||
|
||||
println!("{}", changed_tiles.len()); |
||||
} |
Loading…
Reference in new issue