From 3a722561774c304dc658aa6e3b7401873d928576 Mon Sep 17 00:00:00 2001 From: Daniel Seiller Date: Fri, 18 Dec 2020 02:53:58 +0100 Subject: [PATCH] cargo clippy fixes --- src/day01.rs | 12 ++++++------ src/day02.rs | 4 ++-- src/day04.rs | 20 ++++++++------------ src/day05.rs | 6 +++--- src/day06.rs | 8 ++++---- src/day07.rs | 6 ++---- src/day08.rs | 8 ++++---- src/day09.rs | 6 +++--- src/day10.rs | 2 +- src/day12.rs | 4 ++-- src/day13.rs | 6 +++--- src/day14.rs | 12 ++++++------ src/day15.rs | 6 +++--- src/day16.rs | 10 +++++----- src/day17p1.rs | 4 +--- src/day17p2.rs | 4 +--- src/lib.rs | 1 + 17 files changed, 55 insertions(+), 64 deletions(-) diff --git a/src/day01.rs b/src/day01.rs index 5a8a24d..81f2317 100644 --- a/src/day01.rs +++ b/src/day01.rs @@ -10,9 +10,9 @@ pub fn input_generator(input: &str) -> Vec { } #[aoc(day1, part1)] -pub fn solve_part1(input: &Vec) -> usize { - let mut input = input.clone(); - input.sort(); +pub fn solve_part1(input: &[usize]) -> usize { + let mut input = input.to_vec(); + input.sort_unstable(); for (i1, v1) in input.iter().enumerate() { if v1 > &2020 { break; @@ -27,9 +27,9 @@ pub fn solve_part1(input: &Vec) -> usize { } #[aoc(day1, part2)] -pub fn solve_part2(input: &Vec) -> usize { - let mut input = input.clone(); - input.sort(); +pub fn solve_part2(input: &[usize]) -> usize { + let mut input = input.to_vec(); + input.sort_unstable(); for (i1, v1) in input.iter().enumerate() { if v1 > &2020 { break; diff --git a/src/day02.rs b/src/day02.rs index 0c94a63..2a00885 100644 --- a/src/day02.rs +++ b/src/day02.rs @@ -53,11 +53,11 @@ pub fn input_generator(input: &str) -> Vec { } #[aoc(day2, part1)] -pub fn solve_part1(input: &Vec) -> usize { +pub fn solve_part1(input: &[Rule]) -> usize { return input.iter().filter(|v| v.is_valid_part1()).count(); } #[aoc(day2, part2)] -pub fn solve_part2(input: &Vec) -> usize { +pub fn solve_part2(input: &[Rule]) -> usize { return input.iter().filter(|v| v.is_valid_part2()).count(); } diff --git a/src/day04.rs b/src/day04.rs index c4ff25c..292fce3 100644 --- a/src/day04.rs +++ b/src/day04.rs @@ -42,11 +42,7 @@ impl Creds { return false; } if let Ok(val) = val.parse::() { - if val >= min && val <= max { - return true; - } else { - return false; - } + return val >= min && val <= max; }; return false; } @@ -61,10 +57,10 @@ impl Creds { let num: Result = num.parse(); if let Ok(num) = num { if unit == "cm" { - return num >= 150 && num <= 193; + return (150..=193).contains(&num); }; if unit == "in" { - return num >= 59 && num <= 76; + return (59..=76).contains(&num); }; } return false; @@ -72,7 +68,7 @@ impl Creds { fn validate_ecl(val: &str) -> bool { let choices: Vec<&str> = vec!["amb", "blu", "brn", "gry", "grn", "hzl", "oth"]; - return choices.iter().find(|&&v| v == val).is_some(); + return choices.iter().any(|&v| v == val); } fn validate_hcl(val: &str) -> bool { @@ -121,10 +117,10 @@ pub fn input_generator(input: &str) -> Vec { let mut ret = vec![]; for creds in input.split("\n\n") { let creds = creds.replace("\n", " "); - let creds = creds.split(" "); + let creds = creds.split(' '); let mut cred_data = Creds::default(); for cred in creds { - let cred: Vec<&str> = cred.split(":").collect(); + let cred: Vec<&str> = cred.split(':').collect(); let (key, value) = (cred[0], cred[1]); match key { "byr" => { @@ -162,11 +158,11 @@ pub fn input_generator(input: &str) -> Vec { } #[aoc(day4, part1)] -pub fn solve_part1(input: &Vec) -> usize { +pub fn solve_part1(input: &[Creds]) -> usize { return input.iter().filter(|v| v.is_valid_part1()).count(); } #[aoc(day4, part2)] -pub fn solve_part2(input: &Vec) -> usize { +pub fn solve_part2(input: &[Creds]) -> usize { return input.iter().filter(|v| v.is_valid_part2()).count(); } diff --git a/src/day05.rs b/src/day05.rs index 9155dd4..1ee67c7 100644 --- a/src/day05.rs +++ b/src/day05.rs @@ -26,7 +26,7 @@ pub fn input_generator(input: &str) -> Vec> { .collect() } -pub fn seat_to_pos(seat: &Vec) -> (usize, usize) { +pub fn seat_to_pos(seat: &[Direction]) -> (usize, usize) { let mut col_range: (usize, usize) = (0, 8); let mut row_range: (usize, usize) = (0, 128); for inst in seat { @@ -57,7 +57,7 @@ pub fn seat_to_pos(seat: &Vec) -> (usize, usize) { } #[aoc(day5, part1)] -pub fn solve_part1(input: &Vec>) -> usize { +pub fn solve_part1(input: &[Vec]) -> usize { let mut max_seat_id: usize = 0; for seat in input { let pos = seat_to_pos(seat); @@ -68,7 +68,7 @@ pub fn solve_part1(input: &Vec>) -> usize { } #[aoc(day5, part2)] -pub fn solve_part2(input: &Vec>) -> usize { +pub fn solve_part2(input: &[Vec]) -> usize { let mut seats = [[false; 8]; 128]; for seat in input { let pos = seat_to_pos(seat); diff --git a/src/day06.rs b/src/day06.rs index 489b6cb..09cdddd 100644 --- a/src/day06.rs +++ b/src/day06.rs @@ -6,7 +6,7 @@ pub fn input_generator(input: &str) -> Vec>> { .split("\n\n") .map(|block| { block - .split("\n") + .split('\n') .map(|line| line.chars().collect()) .collect() }) @@ -14,7 +14,7 @@ pub fn input_generator(input: &str) -> Vec>> { } #[aoc(day6, part1)] -fn solve_part1(data: &Vec>>) -> usize { +fn solve_part1(data: &[Vec>]) -> usize { let mut total = 0; for group in data { let mut answers: HashSet = HashSet::new(); @@ -27,7 +27,7 @@ fn solve_part1(data: &Vec>>) -> usize { } #[aoc(day6, part2)] -fn solve_part2(data: &Vec>>) -> usize { +fn solve_part2(data: &[Vec>]) -> usize { let mut total = 0; for group in data { let mut answers: HashSet = HashSet::new(); @@ -35,7 +35,7 @@ fn solve_part2(data: &Vec>>) -> usize { answers.extend(person); } for person in group { - answers = answers.intersection(&person).map(|v| *v).collect(); + answers = answers.intersection(&person).copied().collect(); } total += answers.len(); } diff --git a/src/day07.rs b/src/day07.rs index 989999d..0f42256 100644 --- a/src/day07.rs +++ b/src/day07.rs @@ -1,6 +1,7 @@ use aoc_runner_derive::{aoc, aoc_generator}; use std::collections::{HashMap, VecDeque}; +#[derive(Default)] pub struct Data { fwd: HashMap>, rev: HashMap>, @@ -8,10 +9,7 @@ pub struct Data { impl Data { pub fn new() -> Data { - Data { - fwd: HashMap::new(), - rev: HashMap::new(), - } + Default::default() } } diff --git a/src/day08.rs b/src/day08.rs index 6040944..4bcad1f 100644 --- a/src/day08.rs +++ b/src/day08.rs @@ -49,10 +49,10 @@ impl From<&str> for Inst { } impl CPU { - fn new(pgm: &Vec) -> Self { + fn new(pgm: &[Inst]) -> Self { Self { ip: 0, - program: pgm.clone(), + program: pgm.to_vec(), acc: 0, } } @@ -88,7 +88,7 @@ pub fn input_generator(input: &str) -> Vec { #[aoc(day8, part1)] #[inline(always)] -pub fn solve_part1(input: &Vec) -> usize { +pub fn solve_part1(input: &[Inst]) -> usize { let mut seen = HashSet::new(); let mut cpu = CPU::new(input); loop { @@ -103,7 +103,7 @@ pub fn solve_part1(input: &Vec) -> usize { #[aoc(day8, part2)] #[inline(always)] -pub fn solve_part2(input: &Vec) -> usize { +pub fn solve_part2(input: &[Inst]) -> usize { for (idx, inst) in input.iter().enumerate() { match inst { Inst::Nop { .. } | Inst::Jmp { .. } => { diff --git a/src/day09.rs b/src/day09.rs index 1268946..27ba4bb 100644 --- a/src/day09.rs +++ b/src/day09.rs @@ -12,8 +12,8 @@ pub fn input_generator(input: &str) -> Vec { #[aoc(day9, part1)] #[inline(always)] -pub fn solve_part1(input: &Vec) -> usize { - for (n, win) in input.as_slice().windows(25).enumerate() { +pub fn solve_part1(input: &[usize]) -> usize { + for (n, win) in input.windows(25).enumerate() { let n = n + 25; if n >= input.len() { continue; @@ -39,7 +39,7 @@ pub fn solve_part1(input: &Vec) -> usize { #[aoc(day9, part2)] #[inline(always)] -pub fn solve_part2_fast(input: &Vec) -> usize { +pub fn solve_part2_fast(input: &[usize]) -> usize { let target_num = solve_part1(input); for i in 2..=input.len() { if let Some(w) = input.windows(i).find(|w| target_num == w.iter().sum()) { diff --git a/src/day10.rs b/src/day10.rs index ee399a6..a5bc1dd 100644 --- a/src/day10.rs +++ b/src/day10.rs @@ -45,7 +45,7 @@ impl Data { let mut nodes = self.0.clone(); nodes.push(0); nodes.push(nodes.iter().max().unwrap() + 3); - nodes.sort(); + nodes.sort_unstable(); let goal = *nodes.last().unwrap(); let mut map: HashMap> = HashMap::new(); for n in &nodes { diff --git a/src/day12.rs b/src/day12.rs index 1e84dc6..0bedf91 100644 --- a/src/day12.rs +++ b/src/day12.rs @@ -137,7 +137,7 @@ pub fn input_generator(input: &str) -> Vec { } #[aoc(day12, part1)] -pub fn solve_part1(input: &Vec) -> usize { +pub fn solve_part1(input: &[Command]) -> usize { let mut ship = Ship::new(); for cmd in input { ship.cmd_p1(cmd); @@ -146,7 +146,7 @@ pub fn solve_part1(input: &Vec) -> usize { } #[aoc(day12, part2)] -pub fn solve_part2(input: &Vec) -> usize { +pub fn solve_part2(input: &[Command]) -> usize { let mut ship = Ship::new(); for cmd in input { ship.cmd_p2(cmd); diff --git a/src/day13.rs b/src/day13.rs index 97c49c3..bc5fe4a 100644 --- a/src/day13.rs +++ b/src/day13.rs @@ -52,10 +52,10 @@ pub fn solve_part2(input: &Data) -> i64 { .map(|(a, b)| (a as i64, *b as i64)) .collect::>(); let mut t = 0; - let target = b.iter().map(|(_, b)| b).fold(1, |a, b| a * b); + let target: i64 = b.iter().map(|(_, b)| b).product(); loop { let mut cnt = 0; - let dt = b + let dt: i64= b .iter() .filter_map(|(i, n)| { if (t + i) % n == 0 { @@ -65,7 +65,7 @@ pub fn solve_part2(input: &Data) -> i64 { None } }) - .fold(1, |a, b| a * b); + .product(); if dt == target { return t % dt; } diff --git a/src/day14.rs b/src/day14.rs index e4004de..1e58a1f 100644 --- a/src/day14.rs +++ b/src/day14.rs @@ -27,8 +27,8 @@ impl Command { panic!("Can't apply non-mask command"); } - fn apply_mask_v2_inner(&self, addr: &mut u64, s: &Vec, ret: &mut Vec) { - let mut s_c = s.clone(); + fn apply_mask_v2_inner(&self, addr: &mut u64, s: &[char], ret: &mut Vec) { + let mut s_c = s.to_vec(); for (idx, c) in s.iter().enumerate() { match *c { '0' => (), @@ -55,7 +55,7 @@ impl Command { raw.reverse(); let mut ret = vec![]; self.apply_mask_v2_inner(&mut addr, &raw, &mut ret); - ret.sort(); + ret.sort_unstable(); ret.dedup(); return ret; }; @@ -73,7 +73,7 @@ pub fn input_generator(input: &str) -> Data { let mut mask_and = 0; let mut mask_or = 0; let mut char_buf = vec![]; - for (_, c) in line.split("=").nth(1).unwrap().trim().chars().enumerate() { + for (_, c) in line.split('=').nth(1).unwrap().trim().chars().enumerate() { char_buf.push(c); mask_and <<= 1; mask_or <<= 1; @@ -126,7 +126,7 @@ pub fn input_generator(input: &str) -> Data { } #[aoc(day14, part1)] -pub fn solve_part1(input: &Data) -> u64 { +pub fn solve_part1(input: &[Command]) -> u64 { let mut mem = HashMap::new(); let mut mask = Command::Mask { and: std::u64::MAX, @@ -147,7 +147,7 @@ pub fn solve_part1(input: &Data) -> u64 { } #[aoc(day14, part2)] -pub fn solve_part2(input: &Data) -> u64 { +pub fn solve_part2(input: &[Command]) -> u64 { let mut mem = HashMap::new(); let mut mask = Command::Mask { and: std::u64::MAX, diff --git a/src/day15.rs b/src/day15.rs index d11c7d7..8a86099 100644 --- a/src/day15.rs +++ b/src/day15.rs @@ -36,7 +36,7 @@ impl Seen { #[aoc_generator(day15)] pub fn input_generator(input: &str) -> Data { input - .split(",") + .split(',') .map(|num| num.parse()) .collect::, _>>() .unwrap() @@ -56,11 +56,11 @@ fn get_number(start: &[usize], num_turns: usize) -> usize { } #[aoc(day15, part1)] -pub fn solve_part1(input: &Data) -> usize { +pub fn solve_part1(input: &[usize]) -> usize { return get_number(input, 2020); } #[aoc(day15, part2)] -pub fn solve_part2(input: &Data) -> usize { +pub fn solve_part2(input: &[usize]) -> usize { return get_number(input, 30_000_000); } diff --git a/src/day16.rs b/src/day16.rs index 56dfa74..2fbae2a 100644 --- a/src/day16.rs +++ b/src/day16.rs @@ -13,7 +13,7 @@ type Data = Input; pub fn input_generator(input: &str) -> Data { let l = input.lines(); let ranges: HashMap> = l - .take_while(|l| l.trim().len() != 0) + .take_while(|l| !l.trim().is_empty()) .map(|s| { let parts: Vec<_> = s.to_owned().split(": ").map(|v| v.to_owned()).collect(); let name = parts.get(0).unwrap().trim().to_owned(); @@ -25,7 +25,7 @@ pub fn input_generator(input: &str) -> Data { .map(|l| { let r: Vec = l .to_owned() - .split("-") + .split('-') .map(|v| v.to_owned().parse().unwrap()) .collect(); (r[0], r[1]) @@ -38,12 +38,12 @@ pub fn input_generator(input: &str) -> Data { let my_ticket = l .next() .unwrap() - .split(",") + .split(',') .map(|v| v.parse().unwrap()) .collect(); let other_tickets = l .skip(2) - .map(|nums| nums.split(",").map(|v| v.parse().unwrap()).collect()) + .map(|nums| nums.split(',').map(|v| v.parse().unwrap()).collect()) .collect(); Data { ranges, @@ -52,7 +52,7 @@ pub fn input_generator(input: &str) -> Data { } } -fn in_ranges(num: usize, ranges: &Vec<(usize, usize)>) -> bool { +fn in_ranges(num: usize, ranges: &[(usize, usize)]) -> bool { let mut in_range = false; for (min, max) in ranges { in_range |= (num >= *min) && (num <= *max); diff --git a/src/day17p1.rs b/src/day17p1.rs index 01bf411..63191b7 100644 --- a/src/day17p1.rs +++ b/src/day17p1.rs @@ -37,9 +37,7 @@ impl Data { } let nb = self.count_neighbors(nx, ny, nz); let is_active = self.active.contains(&(nx, ny, nz)); - if is_active && (nb == 2 || nb == 3) { - next_active.insert((nx, ny, nz)); - } else if !is_active && nb == 3 { + if nb == 3 || is_active && nb == 2 { next_active.insert((nx, ny, nz)); } } diff --git a/src/day17p2.rs b/src/day17p2.rs index 80ba28d..33cd861 100644 --- a/src/day17p2.rs +++ b/src/day17p2.rs @@ -40,9 +40,7 @@ impl Data { } let nb = self.count_neighbors(nx, ny, nz, nw); let is_active = self.active.contains(&(nx, ny, nz, nw)); - if is_active && (nb == 2 || nb == 3) { - next_active.insert((nx, ny, nz, nw)); - } else if !is_active && nb == 3 { + if nb == 3 || is_active && nb == 2 { next_active.insert((nx, ny, nz, nw)); } } diff --git a/src/lib.rs b/src/lib.rs index 821a3fc..64ae3d5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ +#![allow(clippy::clippy::needless_return)] use aoc_runner_derive::aoc_lib; pub mod day01; pub mod day02;