From 05c89e5f1154c76823863c4ad5d7a19a9defa446 Mon Sep 17 00:00:00 2001 From: Daniel Seiller Date: Sun, 6 Dec 2020 03:20:11 +0100 Subject: [PATCH] cargo fmt --- src/day1.rs | 1 - src/day2.rs | 4 +- src/day5.rs | 177 ++++++++++++++++++++++++++-------------------------- 3 files changed, 92 insertions(+), 90 deletions(-) diff --git a/src/day1.rs b/src/day1.rs index 4883341..5a8a24d 100644 --- a/src/day1.rs +++ b/src/day1.rs @@ -1,6 +1,5 @@ use aoc_runner_derive::{aoc, aoc_generator}; - #[aoc_generator(day1)] pub fn input_generator(input: &str) -> Vec { input diff --git a/src/day2.rs b/src/day2.rs index 8dc5d05..0c94a63 100644 --- a/src/day2.rs +++ b/src/day2.rs @@ -54,10 +54,10 @@ pub fn input_generator(input: &str) -> Vec { #[aoc(day2, part1)] pub fn solve_part1(input: &Vec) -> usize { - return input.iter().filter(|v| v.is_valid_part1()).count() + return input.iter().filter(|v| v.is_valid_part1()).count(); } #[aoc(day2, part2)] pub fn solve_part2(input: &Vec) -> usize { - return input.iter().filter(|v| v.is_valid_part2()).count() + return input.iter().filter(|v| v.is_valid_part2()).count(); } diff --git a/src/day5.rs b/src/day5.rs index 2923abd..9155dd4 100644 --- a/src/day5.rs +++ b/src/day5.rs @@ -1,87 +1,90 @@ -use aoc_runner_derive::{aoc, aoc_generator}; - -#[derive(Debug,Eq,PartialEq)] -pub enum Direction { - Front, - Back, - Left, - Right -} - -#[aoc_generator(day5)] -pub fn input_generator(input: &str) -> Vec> { - input.lines().map(|line| { - line.chars().map(|c| { - match c { - 'L' => Direction::Left, - 'R' => Direction::Right, - 'F' => Direction::Front, - 'B' => Direction::Back, - other => panic!("Invalid direction: {}",other) - } - }).collect() - }).collect() -} - -pub fn seat_to_pos(seat: &Vec) -> (usize,usize) { - let mut col_range: (usize, usize) = (0,8); - let mut row_range: (usize, usize) = (0,128); - for inst in seat { - let delta_col = (col_range.1-col_range.0)/2; - let delta_row = (row_range.1-row_range.0)/2; - match inst { - Direction::Back => { - row_range.0+=delta_row; - }, - Direction::Front => { - row_range.1-=delta_row; - }, - Direction::Left => { - col_range.1-=delta_col; - }, - Direction::Right => { - col_range.0+=delta_col; - }, - } - } - if row_range.1-row_range.0 != 1 { - panic!("Invalid!"); - } - if col_range.1-col_range.0 != 1 { - panic!("Invalid!"); - } - return (col_range.0,row_range.0); -} - -#[aoc(day5, part1)] -pub fn solve_part1(input: &Vec>) -> usize { - let mut max_seat_id: usize = 0; - for seat in input { - let pos = seat_to_pos(seat); - let seat_id = pos.0+pos.1*8; - max_seat_id=std::cmp::max(max_seat_id,seat_id); - } - return max_seat_id; -} - -#[aoc(day5, part2)] -pub fn solve_part2(input: &Vec>) -> usize { - let mut seats = [[false;8];128]; - for seat in input { - let pos = seat_to_pos(seat); - seats[pos.1][pos.0]=true; - } - for id in 0..(8*128) { - let mut id=id; - let mut v=(false,false,false); - v.0=seats[id/8][id%8]; - id+=1; - v.1=seats[id/8][id%8]; - id+=1; - v.2=seats[id/8][id%8]; - if v==(true,false,true) { - return id-1; - } - } - panic!("Something went wrong!"); -} \ No newline at end of file +use aoc_runner_derive::{aoc, aoc_generator}; + +#[derive(Debug, Eq, PartialEq)] +pub enum Direction { + Front, + Back, + Left, + Right, +} + +#[aoc_generator(day5)] +pub fn input_generator(input: &str) -> Vec> { + input + .lines() + .map(|line| { + line.chars() + .map(|c| match c { + 'L' => Direction::Left, + 'R' => Direction::Right, + 'F' => Direction::Front, + 'B' => Direction::Back, + other => panic!("Invalid direction: {}", other), + }) + .collect() + }) + .collect() +} + +pub fn seat_to_pos(seat: &Vec) -> (usize, usize) { + let mut col_range: (usize, usize) = (0, 8); + let mut row_range: (usize, usize) = (0, 128); + for inst in seat { + let delta_col = (col_range.1 - col_range.0) / 2; + let delta_row = (row_range.1 - row_range.0) / 2; + match inst { + Direction::Back => { + row_range.0 += delta_row; + } + Direction::Front => { + row_range.1 -= delta_row; + } + Direction::Left => { + col_range.1 -= delta_col; + } + Direction::Right => { + col_range.0 += delta_col; + } + } + } + if row_range.1 - row_range.0 != 1 { + panic!("Invalid!"); + } + if col_range.1 - col_range.0 != 1 { + panic!("Invalid!"); + } + return (col_range.0, row_range.0); +} + +#[aoc(day5, part1)] +pub fn solve_part1(input: &Vec>) -> usize { + let mut max_seat_id: usize = 0; + for seat in input { + let pos = seat_to_pos(seat); + let seat_id = pos.0 + pos.1 * 8; + max_seat_id = std::cmp::max(max_seat_id, seat_id); + } + return max_seat_id; +} + +#[aoc(day5, part2)] +pub fn solve_part2(input: &Vec>) -> usize { + let mut seats = [[false; 8]; 128]; + for seat in input { + let pos = seat_to_pos(seat); + seats[pos.1][pos.0] = true; + } + for id in 0..(8 * 128) { + let mut id = id; + let mut v = (false, false, false); + v.0 = seats[id / 8][id % 8]; + id += 1; + v.1 = seats[id / 8][id % 8]; + id += 1; + v.2 = seats[id / 8][id % 8]; + if v == (true, false, true) { + return id - 1; + } + } + panic!("Something went wrong!"); +}