Compare commits
No commits in common. "7f0166c880fda3de7be9d6ef1109a8ec6febc6fd" and "2e74bf7d3795eb3805ed22c065defb87f73069b6" have entirely different histories.
7f0166c880
...
2e74bf7d37
|
@ -1,8 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "day01"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,36 +0,0 @@
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let file = fs::read_to_string("day01.in").unwrap();
|
|
||||||
|
|
||||||
let mut nums: Vec<u32> = vec![];
|
|
||||||
for line in file.split('\n') {
|
|
||||||
if line != "" {
|
|
||||||
nums.push(u32::from_str_radix(line, 10).unwrap());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let count_a = count_inc(&nums);
|
|
||||||
|
|
||||||
let mut nums2: Vec<u32> = vec![];
|
|
||||||
for (i, _) in nums.iter().enumerate() {
|
|
||||||
if i + 2 < nums.len() {
|
|
||||||
nums2.push(nums[i..i + 3].iter().sum());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let count_b = count_inc(&nums2);
|
|
||||||
|
|
||||||
println!("Part 1: {}", count_a);
|
|
||||||
println!("Part 2: {}", count_b);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn count_inc(input: &Vec<u32>) -> usize {
|
|
||||||
let mut count = 0;
|
|
||||||
let mut prev: u32 = 0;
|
|
||||||
for num in input.iter() {
|
|
||||||
if num > &prev && prev != 0 {
|
|
||||||
count += 1;
|
|
||||||
}
|
|
||||||
prev = *num;
|
|
||||||
}
|
|
||||||
count
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
[package]
|
|
||||||
name = "day02"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,54 +0,0 @@
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
let file = fs::read_to_string("day02.in").unwrap();
|
|
||||||
println!("=== PART 1 ===");
|
|
||||||
part1(&file);
|
|
||||||
println!("=== PART 2 ===");
|
|
||||||
part2(&file);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(file: &String) {
|
|
||||||
let mut pos = vec![0, 0];
|
|
||||||
|
|
||||||
let direction_key = |x| match x {
|
|
||||||
"forward" => (1, 0),
|
|
||||||
"down" => (0, 1),
|
|
||||||
"up" => (0, -1),
|
|
||||||
_ => (0, 0),
|
|
||||||
};
|
|
||||||
|
|
||||||
for line in file
|
|
||||||
.strip_suffix("\n")
|
|
||||||
.unwrap()
|
|
||||||
.split('\n')
|
|
||||||
.map(|x| x.split(" ").collect::<Vec<&str>>())
|
|
||||||
{
|
|
||||||
pos[0] += direction_key(line[0]).0 * i32::from_str_radix(line[1], 10).unwrap();
|
|
||||||
pos[1] += direction_key(line[0]).1 * i32::from_str_radix(line[1], 10).unwrap();
|
|
||||||
}
|
|
||||||
println!("Current position: {:?}", pos);
|
|
||||||
println!("Product: {:?}", pos.iter().product::<i32>());
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(file: &String) {
|
|
||||||
let mut pos = vec![0, 0, 0];
|
|
||||||
|
|
||||||
for line in file
|
|
||||||
.strip_suffix("\n")
|
|
||||||
.unwrap()
|
|
||||||
.split('\n')
|
|
||||||
.map(|x| x.split(" ").collect::<Vec<&str>>())
|
|
||||||
{
|
|
||||||
if line[0] == "down" {
|
|
||||||
pos[2] += i32::from_str_radix(line[1], 10).unwrap();
|
|
||||||
} else if line[0] == "up" {
|
|
||||||
pos[2] -= i32::from_str_radix(line[1], 10).unwrap();
|
|
||||||
} else if line[0] == "forward" {
|
|
||||||
pos[0] += i32::from_str_radix(line[1], 10).unwrap();
|
|
||||||
pos[1] += pos[2] * i32::from_str_radix(line[1], 10).unwrap();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
println!("Current position: {:?}", pos);
|
|
||||||
println!("Product: {:?}", pos[0] * pos[1]);
|
|
||||||
}
|
|
Loading…
Reference in New Issue