my solutions to advent of code
aoc advent-of-code
1use std::{fs, ops::ControlFlow}; 2 3fn main() { 4 let input = fs::read_to_string("../input.txt").expect("invalid input"); 5 let input = input.trim(); 6 7 let part1 = input.chars().fold(0, |floor, v| { 8 (match v { 9 '(' => 1, 10 ')' => -1, 11 _ => 0, 12 }) + floor 13 }); 14 15 println!("{}", part1); 16 17 let part2 = input.chars().try_fold((0, 1), |(floor, step), v| { 18 let floor = (match v { 19 '(' => 1, 20 ')' => -1, 21 _ => 0, 22 }) + floor; 23 match floor { 24 -1 => ControlFlow::Break(step), 25 _ => ControlFlow::Continue((floor, step + 1)), 26 } 27 }); 28 let part2 = match part2 { 29 ControlFlow::Break(part2) => part2, 30 ControlFlow::Continue(_) => panic!("bad input. never reached basement"), 31 }; 32 33 println!("{}", part2); 34}