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/
.direnv/
**/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;
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!("Password2: {}", count_zero_clicks(&rotations));
}
fn read_rotations() -> Vec<i32> {
fs::read_to_string("../../inputs/01.txt")
.unwrap()
fn parse_rotations(contents: &str) -> Vec<i32> {
contents
.lines()
.map(|line| {
let distance = line[1..].parse::<i32>().unwrap();
@ -60,3 +59,29 @@ fn count_zero_clicks(rotations: &[i32]) -> i32 {
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": {
"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": {
"locked": {
"lastModified": 1764522689,
@ -18,6 +35,7 @@
},
"root": {
"inputs": {
"inputs": "inputs",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
}

View file

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