mirror of
https://gitlab.com/MisterBiggs/aoc_2015-rust.git
synced 2025-06-16 15:06:49 +00:00
fixed clippy recommentations
This commit is contained in:
parent
78c999f90b
commit
2e7336b959
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -3,7 +3,7 @@
|
|||||||
version = 3
|
version = 3
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "AoC2015"
|
name = "aoc_2015"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itertools",
|
"itertools",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "AoC2015"
|
name = "aoc_2015"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
10
src/day1.rs
10
src/day1.rs
@ -2,15 +2,13 @@ use std::fs;
|
|||||||
|
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
println!("Day 1:");
|
println!("Day 1:");
|
||||||
let input = fs::read_to_string("./inputs/day1.txt")
|
let input = fs::read_to_string("./inputs/day1.txt").expect("Could not read file");
|
||||||
.expect("Could not read file")
|
|
||||||
.to_string();
|
|
||||||
|
|
||||||
println!("\tPart 1: {}", part1(&input));
|
println!("\tPart 1: {}", part1(&input));
|
||||||
println!("\tPart 2: {}", part2(&input));
|
println!("\tPart 2: {}", part2(&input));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part1(directions: &String) -> isize {
|
fn part1(directions: &str) -> isize {
|
||||||
directions
|
directions
|
||||||
.chars()
|
.chars()
|
||||||
.map(|c| match c {
|
.map(|c| match c {
|
||||||
@ -20,7 +18,7 @@ fn part1(directions: &String) -> isize {
|
|||||||
})
|
})
|
||||||
.sum::<isize>()
|
.sum::<isize>()
|
||||||
}
|
}
|
||||||
fn part2(directions: &String) -> usize {
|
fn part2(directions: &str) -> usize {
|
||||||
let mut floor: isize = 0;
|
let mut floor: isize = 0;
|
||||||
|
|
||||||
for (num, dir) in directions.chars().enumerate() {
|
for (num, dir) in directions.chars().enumerate() {
|
||||||
@ -35,7 +33,7 @@ fn part2(directions: &String) -> usize {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return directions.len() + 1;
|
directions.len() + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -24,7 +24,7 @@ fn parse(input: String) -> Vec<Vec<usize>> {
|
|||||||
|
|
||||||
fn part1(dimensions: &Vec<Vec<usize>>) -> usize {
|
fn part1(dimensions: &Vec<Vec<usize>>) -> usize {
|
||||||
dimensions
|
dimensions
|
||||||
.into_iter()
|
.iter()
|
||||||
.map(|x| {
|
.map(|x| {
|
||||||
let (l, w, h) = (x[0], x[1], x[2]);
|
let (l, w, h) = (x[0], x[1], x[2]);
|
||||||
let slack = { cmp::min(l * w, cmp::min(w * h, l * h)) };
|
let slack = { cmp::min(l * w, cmp::min(w * h, l * h)) };
|
||||||
@ -35,7 +35,7 @@ fn part1(dimensions: &Vec<Vec<usize>>) -> usize {
|
|||||||
|
|
||||||
fn part2(dimensions: &Vec<Vec<usize>>) -> usize {
|
fn part2(dimensions: &Vec<Vec<usize>>) -> usize {
|
||||||
dimensions
|
dimensions
|
||||||
.into_iter()
|
.iter()
|
||||||
.map(|x| {
|
.map(|x| {
|
||||||
let (l, w, h) = (x[0], x[1], x[2]);
|
let (l, w, h) = (x[0], x[1], x[2]);
|
||||||
let volume = l * w * h;
|
let volume = l * w * h;
|
||||||
|
30
src/day3.rs
30
src/day3.rs
@ -31,36 +31,36 @@ pub fn run() {
|
|||||||
println!("\tPart 2: {}", part2(&input));
|
println!("\tPart 2: {}", part2(&input));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part1(directions: &String) -> usize {
|
fn part1(directions: &str) -> usize {
|
||||||
let mut location = Point::new(0, 0);
|
let mut location = Point::new(0, 0);
|
||||||
let mut prev_locs = HashSet::new();
|
let mut prev_locs = HashSet::new();
|
||||||
prev_locs.insert(location.clone());
|
prev_locs.insert(location);
|
||||||
|
|
||||||
for dir in directions.chars() {
|
for dir in directions.chars() {
|
||||||
location.next_point(dir);
|
location.next_point(dir);
|
||||||
prev_locs.insert(location.clone());
|
prev_locs.insert(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
return prev_locs.len();
|
prev_locs.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part2(directions: &String) -> usize {
|
fn part2(directions: &str) -> usize {
|
||||||
let mut santa = Point::new(0, 0);
|
let mut santa = Point::new(0, 0);
|
||||||
let mut robo = Point::new(0, 0);
|
let mut robo = Point::new(0, 0);
|
||||||
let mut prev_locs = HashSet::new();
|
let mut prev_locs = HashSet::new();
|
||||||
prev_locs.insert(santa.clone());
|
prev_locs.insert(santa);
|
||||||
|
|
||||||
for (i, dir) in directions.chars().enumerate() {
|
for (i, dir) in directions.chars().enumerate() {
|
||||||
if i % 2 == 0 {
|
if i % 2 == 0 {
|
||||||
santa.next_point(dir);
|
santa.next_point(dir);
|
||||||
prev_locs.insert(santa.clone());
|
prev_locs.insert(santa);
|
||||||
} else {
|
} else {
|
||||||
robo.next_point(dir);
|
robo.next_point(dir);
|
||||||
prev_locs.insert(robo.clone());
|
prev_locs.insert(robo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return prev_locs.len();
|
prev_locs.len()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -69,14 +69,14 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_part_1() {
|
fn test_part_1() {
|
||||||
assert_eq!(part1(&">".to_string()), 2);
|
assert_eq!(part1(">"), 2);
|
||||||
assert_eq!(part1(&"^>v<".to_string()), 4);
|
assert_eq!(part1("^>v<"), 4);
|
||||||
assert_eq!(part1(&"^v^v^v^v^v".to_string()), 2);
|
assert_eq!(part1("^v^v^v^v^v"), 2);
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_part_2() {
|
fn test_part_2() {
|
||||||
assert_eq!(part2(&">>".to_string()), 2);
|
assert_eq!(part2(">>"), 2);
|
||||||
assert_eq!(part2(&"^>v<".to_string()), 3);
|
assert_eq!(part2("^>v<"), 3);
|
||||||
assert_eq!(part2(&"^v^v^v^v^v".to_string()), 11);
|
assert_eq!(part2("^v^v^v^v^v"), 11);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
11
src/day4.rs
11
src/day4.rs
@ -1,8 +1,6 @@
|
|||||||
use md5;
|
|
||||||
|
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
println!("Day 4: [PRECALCULATED]");
|
println!("Day 4: [PRECALCULATED]");
|
||||||
let input = "yzbqklnj".to_string();
|
// let input = "yzbqklnj".to_string();
|
||||||
|
|
||||||
println!("\tPart 1: 282749");
|
println!("\tPart 1: 282749");
|
||||||
println!("\tPart 2: 9962624");
|
println!("\tPart 2: 9962624");
|
||||||
@ -10,7 +8,8 @@ pub fn run() {
|
|||||||
// println!("\tPart 2: {}", part1(&input, 6));
|
// println!("\tPart 2: {}", part1(&input, 6));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part1(input: &String, zeros: usize) -> usize {
|
#[allow(dead_code)]
|
||||||
|
fn part1(input: &str, zeros: usize) -> usize {
|
||||||
let mut key: usize = 0;
|
let mut key: usize = 0;
|
||||||
|
|
||||||
let max_iter = 1e9 as usize;
|
let max_iter = 1e9 as usize;
|
||||||
@ -35,7 +34,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_part_1() {
|
fn test_part_1() {
|
||||||
assert_eq!(part1(&"abcdef".to_string(), 5), 609043);
|
assert_eq!(part1("abcdef", 5), 609043);
|
||||||
assert_eq!(part1(&"pqrstuv".to_string(), 5), 1048970);
|
assert_eq!(part1("pqrstuv", 5), 1048970);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
45
src/day5.rs
45
src/day5.rs
@ -4,16 +4,14 @@ use itertools::Itertools;
|
|||||||
|
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
println!("Day 5:");
|
println!("Day 5:");
|
||||||
let input = fs::read_to_string("./inputs/day5.txt")
|
let input = fs::read_to_string("./inputs/day5.txt").expect("Could not read file");
|
||||||
.expect("Could not read file")
|
|
||||||
.to_string();
|
|
||||||
// dbg!(input.)
|
// dbg!(input.)
|
||||||
|
|
||||||
println!("\tPart 1: {}", part1(&input));
|
println!("\tPart 1: {}", part1(&input));
|
||||||
println!("\tPart 2: {}", part2(&input));
|
println!("\tPart 2: {}", part2(&input));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part1(input: &String) -> usize {
|
fn part1(input: &str) -> usize {
|
||||||
let mut nice = 0;
|
let mut nice = 0;
|
||||||
|
|
||||||
for txt in input.split_whitespace() {
|
for txt in input.split_whitespace() {
|
||||||
@ -53,10 +51,10 @@ fn part1(input: &String) -> usize {
|
|||||||
nice += 1;
|
nice += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nice;
|
nice
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part2(input: &String) -> usize {
|
fn part2(input: &str) -> usize {
|
||||||
let mut nice = 0;
|
let mut nice = 0;
|
||||||
|
|
||||||
for txt in input.split_whitespace() {
|
for txt in input.split_whitespace() {
|
||||||
@ -67,12 +65,10 @@ fn part2(input: &String) -> usize {
|
|||||||
.enumerate()
|
.enumerate()
|
||||||
.tuple_combinations()
|
.tuple_combinations()
|
||||||
{
|
{
|
||||||
if l.1 == r.1 {
|
if l.1 == r.1 && l.0.abs_diff(r.0) > 1 {
|
||||||
if l.0.abs_diff(r.0) > 1 {
|
|
||||||
double = true;
|
double = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if !double {
|
if !double {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -88,7 +84,7 @@ fn part2(input: &String) -> usize {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nice;
|
nice
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
@ -97,12 +93,9 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_1_examples() {
|
fn test_1_examples() {
|
||||||
assert_eq!(part1(&"ugknbfddgicrmopn".to_string()), 1);
|
assert_eq!(part1("ugknbfddgicrmopn"), 1);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
part1(
|
part1("ugknbfddgicrmopn\naaa\njchzalrnumimnmhp\nhaegwjzuvuyypxyu\ndvszwmarrgswjxmb"),
|
||||||
&"ugknbfddgicrmopn\naaa\njchzalrnumimnmhp\nhaegwjzuvuyypxyu\ndvszwmarrgswjxmb"
|
|
||||||
.to_string()
|
|
||||||
),
|
|
||||||
2
|
2
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -110,34 +103,26 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn test_1_input() {
|
fn test_1_input() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
part1(
|
part1(&fs::read_to_string("./inputs/day5.txt").expect("Could not read file")),
|
||||||
&fs::read_to_string("./inputs/day5.txt")
|
|
||||||
.expect("Could not read file")
|
|
||||||
.to_string()
|
|
||||||
),
|
|
||||||
238
|
238
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_2_examples() {
|
fn test_2_examples() {
|
||||||
assert_eq!(part2(&"qjhvhtzxzqqjkmpb".to_string()), 1);
|
assert_eq!(part2("qjhvhtzxzqqjkmpb"), 1);
|
||||||
assert_eq!(part2(&"xxyxx".to_string()), 1);
|
assert_eq!(part2("xxyxx"), 1);
|
||||||
assert_eq!(part2(&"aaa".to_string()), 0);
|
assert_eq!(part2("aaa"), 0);
|
||||||
assert_eq!(part2(&"aaaaa".to_string()), 1);
|
assert_eq!(part2("aaaaa"), 1);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
part2(&"qjhvhtzxzqqjkmpb\nxxyxx\nuurcxstgmygtbstg\nieodomkazucvgmuy".to_string()),
|
part2("qjhvhtzxzqqjkmpb\nxxyxx\nuurcxstgmygtbstg\nieodomkazucvgmuy"),
|
||||||
2
|
2
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn test_2_input() {
|
fn test_2_input() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
part2(
|
part2(&fs::read_to_string("./inputs/day5.txt").expect("Could not read file")),
|
||||||
&fs::read_to_string("./inputs/day5.txt")
|
|
||||||
.expect("Could not read file")
|
|
||||||
.to_string()
|
|
||||||
),
|
|
||||||
69
|
69
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ mod day2;
|
|||||||
mod day3;
|
mod day3;
|
||||||
mod day4;
|
mod day4;
|
||||||
mod day5;
|
mod day5;
|
||||||
|
// mod day6;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Running Advent of Code 2021");
|
println!("Running Advent of Code 2021");
|
||||||
@ -11,4 +12,5 @@ fn main() {
|
|||||||
day3::run();
|
day3::run();
|
||||||
day4::run();
|
day4::run();
|
||||||
day5::run();
|
day5::run();
|
||||||
|
// day6::run();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user