diff --git a/day2/.devcontainer/Dockerfile b/day2/.devcontainer/Dockerfile new file mode 100644 index 0000000..31c18c9 --- /dev/null +++ b/day2/.devcontainer/Dockerfile @@ -0,0 +1,9 @@ +# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.205.2/containers/rust/.devcontainer/base.Dockerfile + +# [Choice] Debian OS version (use bullseye on local arm64/Apple Silicon): buster, bullseye +ARG VARIANT="buster" +FROM mcr.microsoft.com/vscode/devcontainers/rust:0-${VARIANT} + +# [Optional] Uncomment this section to install additional packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends diff --git a/day2/.devcontainer/devcontainer.json b/day2/.devcontainer/devcontainer.json new file mode 100644 index 0000000..cfcfbe5 --- /dev/null +++ b/day2/.devcontainer/devcontainer.json @@ -0,0 +1,46 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.205.2/containers/rust +{ + "name": "Rust", + "build": { + "dockerfile": "Dockerfile", + "args": { + // Use the VARIANT arg to pick a Debian OS version: buster, bullseye + // Use bullseye when on local on arm64/Apple Silicon. + "VARIANT": "buster" + } + }, + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined" + ], + + // Set *default* container specific settings.json values on container create. + "settings": { + "lldb.executable": "/usr/bin/lldb", + // VS Code don't watch files under ./target + "files.watcherExclude": { + "**/target/**": true + }, + "rust-analyzer.checkOnSave.command": "clippy" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "vadimcn.vscode-lldb", + "mutantdino.resourcemonitor", + "matklad.rust-analyzer", + "tamasfe.even-better-toml", + "serayuzgur.crates" + ], + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "rustc --version", + + // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "vscode" +} diff --git a/day2/Cargo.toml b/day2/Cargo.toml new file mode 100644 index 0000000..659d7e3 --- /dev/null +++ b/day2/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day2" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde = "1.0.130" diff --git a/day2/input.txt b/day2/input.txt new file mode 100644 index 0000000..76a3e91 --- /dev/null +++ b/day2/input.txt @@ -0,0 +1,1000 @@ +forward 4 +down 8 +down 3 +down 1 +forward 8 +up 6 +down 4 +forward 2 +down 4 +down 6 +down 7 +forward 1 +down 4 +down 6 +forward 7 +down 2 +up 8 +up 3 +forward 1 +forward 2 +down 3 +down 8 +forward 6 +forward 5 +down 4 +down 1 +up 5 +down 5 +down 2 +up 6 +forward 4 +forward 3 +down 8 +down 9 +up 2 +forward 1 +forward 2 +down 1 +forward 3 +down 7 +up 6 +down 1 +down 7 +down 5 +forward 8 +down 5 +down 1 +down 7 +up 9 +forward 6 +up 8 +down 3 +down 9 +down 3 +forward 2 +forward 1 +forward 4 +down 7 +up 8 +down 1 +up 1 +forward 4 +down 7 +forward 5 +forward 2 +forward 1 +up 8 +down 2 +up 6 +down 7 +down 4 +up 6 +forward 2 +forward 8 +down 8 +down 2 +forward 2 +forward 9 +down 1 +forward 5 +down 4 +forward 4 +down 2 +down 1 +forward 7 +down 1 +down 5 +down 5 +up 5 +forward 7 +forward 6 +forward 3 +forward 9 +forward 3 +forward 5 +down 8 +down 9 +forward 7 +up 5 +up 7 +down 5 +up 9 +forward 9 +up 8 +up 2 +forward 5 +down 2 +forward 2 +down 4 +up 4 +down 2 +up 3 +up 8 +down 3 +down 4 +down 7 +forward 3 +forward 9 +down 1 +down 2 +down 5 +down 1 +forward 2 +forward 2 +up 8 +down 4 +forward 7 +up 6 +down 9 +down 6 +up 1 +down 2 +forward 6 +down 4 +up 1 +forward 3 +down 4 +down 1 +up 8 +forward 3 +down 5 +up 2 +down 8 +down 4 +up 2 +down 2 +forward 6 +up 4 +up 2 +down 2 +forward 7 +down 5 +forward 2 +forward 8 +up 3 +forward 5 +up 6 +down 4 +down 1 +down 8 +down 2 +forward 8 +up 2 +down 5 +up 8 +down 1 +down 1 +down 5 +up 4 +down 1 +down 3 +down 8 +forward 6 +down 9 +forward 6 +up 2 +forward 1 +forward 9 +down 9 +down 3 +down 9 +down 6 +down 4 +down 8 +forward 1 +down 1 +forward 2 +up 2 +forward 8 +down 1 +up 6 +down 4 +down 3 +forward 8 +up 7 +down 6 +down 1 +down 2 +forward 1 +up 5 +up 7 +down 6 +down 4 +down 5 +forward 9 +down 7 +down 9 +down 5 +forward 9 +forward 7 +forward 9 +forward 8 +up 4 +forward 5 +down 7 +forward 8 +up 1 +forward 3 +forward 2 +forward 2 +down 7 +forward 9 +down 7 +down 9 +forward 6 +forward 8 +up 5 +up 8 +up 7 +up 6 +forward 7 +down 6 +down 5 +down 3 +forward 7 +down 7 +forward 6 +down 4 +down 2 +down 9 +down 2 +up 8 +down 8 +down 3 +down 4 +forward 3 +up 6 +down 9 +forward 1 +down 3 +forward 9 +down 6 +forward 9 +forward 8 +forward 5 +up 2 +forward 5 +up 7 +down 6 +forward 6 +down 8 +forward 2 +down 7 +down 8 +up 1 +forward 3 +forward 5 +down 3 +forward 8 +up 7 +forward 9 +forward 6 +forward 1 +forward 7 +down 5 +forward 3 +down 5 +down 6 +down 7 +down 3 +down 8 +up 5 +forward 2 +forward 5 +up 7 +up 4 +forward 1 +forward 1 +down 1 +down 7 +forward 4 +up 8 +forward 5 +down 9 +up 7 +forward 8 +down 4 +forward 4 +forward 6 +down 8 +forward 7 +down 1 +forward 9 +down 9 +up 1 +down 6 +forward 6 +down 7 +down 4 +forward 6 +forward 3 +down 5 +up 5 +up 7 +up 5 +down 6 +forward 7 +up 3 +down 2 +forward 6 +down 8 +down 7 +up 9 +forward 3 +forward 1 +down 8 +forward 6 +forward 4 +up 9 +forward 3 +down 1 +forward 4 +forward 9 +forward 2 +forward 8 +forward 1 +forward 2 +forward 7 +down 6 +forward 6 +up 2 +forward 5 +up 8 +down 9 +up 8 +down 5 +down 1 +down 6 +up 4 +down 4 +down 5 +up 6 +down 8 +down 8 +forward 9 +forward 8 +forward 2 +down 2 +up 3 +forward 2 +down 8 +down 8 +forward 3 +forward 5 +down 9 +down 2 +forward 6 +forward 7 +down 7 +forward 4 +forward 2 +down 1 +down 6 +up 5 +down 2 +forward 3 +forward 9 +down 9 +down 3 +forward 3 +forward 6 +down 2 +forward 5 +forward 7 +down 6 +forward 4 +down 6 +forward 6 +forward 3 +forward 3 +forward 8 +down 4 +up 4 +down 6 +down 4 +down 9 +forward 7 +forward 4 +forward 7 +down 3 +forward 1 +down 7 +down 3 +forward 1 +down 7 +down 5 +forward 6 +up 7 +down 7 +forward 5 +forward 5 +up 9 +down 7 +forward 1 +forward 2 +down 4 +down 8 +down 7 +forward 4 +forward 4 +forward 3 +down 8 +down 7 +down 8 +forward 2 +down 2 +forward 2 +forward 4 +up 6 +down 4 +up 3 +forward 7 +down 9 +down 3 +forward 3 +down 2 +down 2 +up 5 +down 4 +forward 3 +forward 3 +up 7 +forward 8 +forward 6 +down 3 +forward 2 +down 6 +up 1 +down 7 +down 7 +forward 8 +up 1 +up 8 +up 4 +up 1 +forward 4 +forward 9 +down 9 +down 5 +down 3 +forward 8 +down 3 +forward 4 +down 6 +down 9 +down 3 +forward 6 +up 1 +up 4 +forward 9 +down 3 +up 1 +forward 4 +up 1 +forward 8 +down 9 +up 1 +forward 3 +down 7 +down 7 +down 3 +forward 7 +forward 5 +down 8 +up 8 +down 6 +down 4 +forward 9 +down 9 +up 5 +forward 6 +down 8 +up 8 +down 2 +forward 1 +down 8 +down 2 +forward 7 +forward 2 +down 2 +forward 5 +up 2 +down 6 +down 1 +down 6 +down 3 +up 4 +forward 4 +forward 8 +down 3 +forward 9 +forward 6 +down 2 +up 2 +down 2 +up 4 +down 8 +forward 5 +down 4 +forward 3 +down 4 +forward 6 +down 8 +down 2 +up 7 +down 3 +down 6 +up 1 +forward 8 +up 5 +down 1 +forward 3 +down 2 +down 5 +up 5 +up 2 +down 2 +down 2 +down 4 +forward 3 +up 7 +forward 8 +forward 4 +down 3 +forward 8 +down 4 +down 9 +down 7 +up 3 +up 4 +down 4 +forward 3 +down 3 +up 5 +down 1 +forward 4 +forward 9 +forward 3 +forward 3 +up 6 +down 3 +forward 3 +up 7 +down 3 +up 7 +up 2 +up 2 +down 9 +forward 4 +forward 7 +forward 7 +down 7 +forward 2 +forward 1 +down 9 +forward 2 +down 2 +down 4 +up 3 +forward 8 +up 3 +down 7 +forward 9 +down 7 +forward 2 +down 1 +up 9 +forward 7 +forward 9 +up 4 +forward 3 +forward 1 +down 5 +down 6 +forward 9 +down 9 +forward 2 +forward 8 +forward 4 +forward 9 +down 5 +down 9 +down 3 +down 7 +up 2 +up 7 +forward 6 +down 3 +down 2 +up 1 +forward 4 +down 1 +up 4 +up 8 +down 9 +down 5 +down 7 +forward 4 +down 1 +forward 8 +down 5 +forward 7 +down 3 +up 2 +forward 4 +down 1 +forward 4 +up 5 +forward 9 +down 1 +forward 7 +up 3 +up 9 +forward 4 +up 5 +down 6 +forward 2 +down 1 +forward 1 +down 9 +forward 5 +down 2 +up 3 +down 5 +up 4 +down 5 +down 8 +down 8 +down 3 +forward 9 +forward 2 +down 3 +down 3 +down 6 +down 8 +forward 9 +down 4 +down 1 +forward 4 +down 9 +forward 1 +down 9 +up 6 +up 7 +up 8 +forward 5 +down 3 +up 5 +up 1 +down 8 +forward 1 +forward 7 +up 9 +down 7 +forward 4 +down 5 +forward 2 +down 6 +up 8 +down 1 +down 6 +down 9 +down 8 +forward 8 +down 4 +up 2 +down 2 +forward 9 +up 6 +down 3 +forward 5 +forward 9 +up 2 +up 5 +down 5 +forward 2 +forward 3 +forward 2 +up 2 +down 2 +forward 9 +up 4 +down 4 +up 1 +down 1 +down 6 +down 6 +forward 2 +up 6 +up 9 +forward 7 +forward 4 +down 6 +down 5 +down 5 +down 9 +forward 7 +down 1 +up 5 +forward 4 +up 8 +up 8 +down 4 +down 7 +forward 1 +forward 8 +down 3 +up 3 +up 3 +up 4 +down 1 +down 8 +up 6 +up 8 +forward 2 +down 2 +down 3 +forward 4 +forward 3 +forward 6 +down 1 +up 6 +forward 2 +forward 6 +forward 2 +forward 5 +down 1 +up 4 +forward 7 +down 6 +forward 8 +up 9 +down 5 +up 3 +forward 8 +forward 1 +forward 9 +up 9 +forward 4 +forward 5 +down 1 +up 9 +down 5 +down 7 +forward 8 +down 1 +forward 3 +forward 2 +down 9 +down 1 +forward 5 +up 6 +down 7 +forward 4 +down 6 +forward 1 +forward 8 +up 4 +forward 5 +down 8 +forward 6 +up 2 +forward 3 +forward 5 +up 6 +up 8 +up 4 +forward 6 +down 2 +down 6 +down 5 +up 2 +down 3 +down 7 +up 6 +forward 2 +forward 3 +up 6 +forward 3 +up 8 +forward 6 +down 8 +down 7 +down 1 +down 6 +up 8 +up 9 +down 4 +forward 2 +forward 7 +down 8 +up 6 +up 8 +up 8 +down 4 +forward 9 +down 5 +forward 5 +forward 3 +down 1 +forward 1 +up 9 +down 1 +down 6 +up 6 +forward 7 +forward 1 +down 5 +down 2 +forward 5 +down 3 +down 4 +forward 6 +up 6 +down 9 +up 3 +forward 1 +up 3 +down 5 +up 4 +down 4 +forward 9 +up 5 +down 1 +forward 4 +down 8 +up 1 +forward 9 +forward 8 +up 4 +up 3 +up 5 +forward 5 +up 7 +forward 5 +forward 4 +forward 6 +forward 9 +down 6 +down 3 +up 5 +forward 2 +up 9 +down 4 +down 2 +forward 5 +up 6 +forward 1 +up 5 +up 3 +down 4 +forward 3 +forward 6 +up 4 +up 6 +down 3 +down 2 +up 3 +down 9 +up 7 +forward 6 +up 4 +forward 7 +down 4 +up 6 +down 6 +forward 9 +forward 4 +up 2 +forward 7 +up 5 +forward 2 +forward 2 +down 4 +down 4 +forward 3 +down 4 +up 3 +forward 9 +down 5 +forward 6 +forward 9 +forward 9 +up 6 +down 9 +forward 8 +up 7 +up 5 +down 6 +forward 6 +forward 1 +down 6 +forward 5 +down 2 +down 1 +forward 6 +down 6 +down 9 +down 5 +forward 1 +down 7 +down 7 +down 4 +forward 7 +up 5 +up 1 +up 2 +up 5 +down 3 +forward 9 +forward 2 +forward 8 +up 4 +forward 7 +forward 6 +forward 9 +down 2 +down 6 +forward 4 +down 9 +down 9 +up 3 +forward 2 +forward 1 +down 5 +up 9 +down 6 +forward 6 +down 8 +forward 3 +forward 5 +forward 3 +forward 2 +down 7 +down 2 +up 8 +forward 9 +down 8 +up 7 +down 4 +up 3 +forward 6 +down 3 +up 3 +down 6 +down 3 +up 2 +down 4 +down 4 +up 2 +down 6 +down 5 +down 9 +down 1 +down 7 +up 9 +down 4 +up 6 +down 6 +forward 9 +forward 2 +down 8 +down 3 +forward 4 +forward 4 +forward 5 +down 2 +down 8 +down 1 +up 4 +forward 9 +up 7 +forward 5 +down 5 +up 9 +down 2 +down 2 +forward 4 +forward 4 +forward 8 \ No newline at end of file diff --git a/day2/rust/Cargo.toml b/day2/rust/Cargo.toml new file mode 100644 index 0000000..1ec6963 --- /dev/null +++ b/day2/rust/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "rust" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day2/rust/src/main.rs b/day2/rust/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/day2/rust/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/day2/src/main.rs b/day2/src/main.rs new file mode 100644 index 0000000..a36c66e --- /dev/null +++ b/day2/src/main.rs @@ -0,0 +1,36 @@ +use std::fs; + +fn main() { + let input = fs::read_to_string("./input.txt").expect("Could not read file"); + + let commands: Vec<(&str, i32)> = input + .lines() + .map(|s| { + let mut split = s.split_whitespace(); + ( + split.next().unwrap(), + split.next().unwrap().parse::().unwrap(), + ) + }) + .collect(); + + part1(commands) +} + +fn part1(commands: Vec<(&str, i32)>) { + let mut position = 0; + let mut depth = 0; + + for (dir, amt) in commands.iter().map(|a| *a) { + let change = match dir { + "forward" => (amt, 0), + "up" => (0, -amt), + "down" => (0, amt), + _ => (0, 0), + }; + + position += change.0; + depth += change.1; + } + println!("Part 1: {}", position * depth); +}