Compare commits

...

2 commits

6 changed files with 71 additions and 19 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake

1
.gitignore vendored
View file

@ -3,3 +3,4 @@
.idea/ .idea/
.direnv/ .direnv/
**/target **/target
inputs

View file

@ -1,10 +0,0 @@
L68
L30
R48
L5
R60
L55
L1
L99
R14
L82

View file

@ -4,15 +4,14 @@ const STARTING_POSITION: i32 = 50;
const DIAL_RANGE: i32 = 100; const DIAL_RANGE: i32 = 100;
fn main() { fn main() {
let rotations = read_rotations(); let rotations = parse_rotations(&fs::read_to_string("../../inputs/01.txt").unwrap());
println!("Password1: {}", count_zero_positions(&rotations)); println!("Password1: {}", count_zero_positions(&rotations));
println!("Password2: {}", count_zero_clicks(&rotations)); println!("Password2: {}", count_zero_clicks(&rotations));
} }
fn read_rotations() -> Vec<i32> { fn parse_rotations(contents: &str) -> Vec<i32> {
fs::read_to_string("../../inputs/01.txt") contents
.unwrap()
.lines() .lines()
.map(|line| { .map(|line| {
let distance = line[1..].parse::<i32>().unwrap(); let distance = line[1..].parse::<i32>().unwrap();
@ -60,3 +59,29 @@ fn count_zero_clicks(rotations: &[i32]) -> i32 {
counter counter
} }
#[cfg(test)]
mod tests {
use super::*;
const TEST_INPUT: &str = "L68
L30
R48
L5
R60
L55
L1
L99
R14
L82";
#[test]
fn test_part1() {
assert_eq!(count_zero_positions(&parse_rotations(TEST_INPUT)), 3);
}
#[test]
fn test_part2() {
assert_eq!(count_zero_clicks(&parse_rotations(TEST_INPUT)), 6);
}
}

18
flake.lock generated
View file

@ -1,5 +1,22 @@
{ {
"nodes": { "nodes": {
"inputs": {
"flake": false,
"locked": {
"lastModified": 1764611941,
"narHash": "sha256-GEVJK9tSeNnGgYYRbjtYE/su75nxRvOm8h0Sf5GD70A=",
"ref": "refs/heads/main",
"rev": "5390449be22f56739e0840e35e46d54b1166886c",
"shallow": true,
"type": "git",
"url": "ssh://git@github.com/SebastianStork/advent-of-code-inputs.git"
},
"original": {
"shallow": true,
"type": "git",
"url": "ssh://git@github.com/SebastianStork/advent-of-code-inputs.git"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1764522689, "lastModified": 1764522689,
@ -18,6 +35,7 @@
}, },
"root": { "root": {
"inputs": { "inputs": {
"inputs": "inputs",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
} }

View file

@ -6,25 +6,42 @@
url = "github:oxalica/rust-overlay"; url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
inputs = {
url = "git+ssh://git@github.com/SebastianStork/advent-of-code-inputs.git?shallow=1";
flake = false;
};
}; };
outputs = outputs =
{ nixpkgs, rust-overlay, ... }: {
nixpkgs,
rust-overlay,
inputs,
...
}:
let let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
in in
{ {
devShells.${system} = { devShells.${system} = {
default = pkgs.mkShellNoCC {
packages = [ pkgs.stow ];
shellHook = ''
stow --dir=${inputs} --target=./. package
'';
};
cpp = pkgs.mkShell.override { stdenv = pkgs.clangStdenv; } { cpp = pkgs.mkShell.override { stdenv = pkgs.clangStdenv; } {
packages = with pkgs; [ packages = [
gdb pkgs.gdb
clang-tools pkgs.clang-tools
]; ];
}; };
go = pkgs.mkShellNoCC { go = pkgs.mkShellNoCC {
packages = with pkgs; [ go ]; packages = [ pkgs.go ];
}; };
rust = rust =