uploading 2022 where i left it
This commit is contained in:
8
Cargo.lock
generated
8
Cargo.lock
generated
@@ -62,6 +62,14 @@ dependencies = [
|
|||||||
"nom",
|
"nom",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day17"
|
||||||
|
version = "2022.0.0"
|
||||||
|
dependencies = [
|
||||||
|
"itertools",
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "day2"
|
name = "day2"
|
||||||
version = "2022.0.0"
|
version = "2022.0.0"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ members = [
|
|||||||
"day14",
|
"day14",
|
||||||
"day15",
|
"day15",
|
||||||
"day16",
|
"day16",
|
||||||
|
"day17",
|
||||||
]
|
]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
|
|||||||
12
day17/Cargo.toml
Normal file
12
day17/Cargo.toml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[package]
|
||||||
|
name = "day17"
|
||||||
|
version.workspace = true
|
||||||
|
edition.workspace = true
|
||||||
|
authors.workspace = true
|
||||||
|
repository.workspace = true
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
itertools.workspace = true
|
||||||
|
nom.workspace = true
|
||||||
59
day17/src/main.rs
Normal file
59
day17/src/main.rs
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
use std::default;
|
||||||
|
|
||||||
|
use nom::{branch::alt, bytes::complete::tag, error::Error, Parser};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
enum Shape {
|
||||||
|
Bar,
|
||||||
|
Plus,
|
||||||
|
El,
|
||||||
|
Staff,
|
||||||
|
Square,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Shape {
|
||||||
|
pub fn iter() -> ShapeGenerator {
|
||||||
|
ShapeGenerator::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ShapeGenerator {
|
||||||
|
last_shape: Shape,
|
||||||
|
}
|
||||||
|
impl ShapeGenerator {
|
||||||
|
fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
last_shape: Shape::Square,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Iterator for ShapeGenerator {
|
||||||
|
type Item = Shape;
|
||||||
|
|
||||||
|
fn next(&mut self) -> Option<Self::Item> {
|
||||||
|
self.last_shape = match self.last_shape {
|
||||||
|
Shape::Bar => Shape::Plus,
|
||||||
|
Shape::Plus => Shape::El,
|
||||||
|
Shape::El => Shape::Staff,
|
||||||
|
Shape::Staff => Shape::Square,
|
||||||
|
Shape::Square => Shape::Bar,
|
||||||
|
};
|
||||||
|
Some(self.last_shape)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Jet {
|
||||||
|
Left,
|
||||||
|
Right,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> Parser<&'a str, Self, Error<&'a str>> for Jet {
|
||||||
|
fn parse(&mut self, input: &'a str) -> nom::IResult<&'a str, Self, Error<&'a str>> {
|
||||||
|
alt((tag("<").map(|_| Self::Left), tag(">").map(|_| Self::Right)))(input)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn main() {
|
||||||
|
let shapes = Shape::iter().take(10).collect::<Vec<_>>();
|
||||||
|
println!("{shapes:#?}");
|
||||||
|
}
|
||||||
@@ -119,6 +119,14 @@ fn recurse_part1(collector: &mut Vec<usize>, cwd: &MyDir) -> usize {
|
|||||||
cwd_size
|
cwd_size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn process_part1(input: &str) -> String {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn process_part2(input: &str) -> String {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
fn main() -> std::io::Result<()> {
|
fn main() -> std::io::Result<()> {
|
||||||
//Read in file
|
//Read in file
|
||||||
let file = File::open("input")?;
|
let file = File::open("input")?;
|
||||||
@@ -172,3 +180,41 @@ fn main() -> std::io::Result<()> {
|
|||||||
println!("Part 2: {}", part2.unwrap());
|
println!("Part 2: {}", part2.unwrap());
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "$ cd /
|
||||||
|
$ ls
|
||||||
|
dir a
|
||||||
|
14848514 b.txt
|
||||||
|
8504156 c.dat
|
||||||
|
dir d
|
||||||
|
$ cd a
|
||||||
|
$ ls
|
||||||
|
dir e
|
||||||
|
29116 f
|
||||||
|
2557 g
|
||||||
|
62596 h.lst
|
||||||
|
$ cd e
|
||||||
|
$ ls
|
||||||
|
584 i
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd d
|
||||||
|
$ ls
|
||||||
|
4060174 j
|
||||||
|
8033020 d.log
|
||||||
|
5626152 d.ext
|
||||||
|
7214296 k";
|
||||||
|
#[test]
|
||||||
|
fn part1_works() {
|
||||||
|
assert_eq!(process_part1(INPUT), "95437");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_works() {
|
||||||
|
assert_eq!(process_part2(INPUT), "24933642");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user