Adventofcode/2024/nix/day_1.nix

22 lines
808 B
Nix

#{ lib }:
let
lib = import<nixpkgs/lib>;
filePath = ./example.txt; # Path to the file
fileContent = builtins.readFile filePath;
lines = lib.strings.splitString "\n" fileContent;
filterNonEmpty = word: word != "";
isEmptyPair = pair: (pair[0] == null || pair[0] == "") && (pair[1] == null || pair[1] == "");
processWord = word: lib.strings.toInt word;
processLine = line: map processWord (lib.lists.filter filterNonEmpty (lib.strings.splitString " " line));
calculateDistance = pairs:
let
x = builtins.elemAt pairs 0;
y = builtins.elemAt pairs 1;
in
y - x;
processedLines = lib.lists.filter (list: (builtins.length list) > 0) (map processLine lines);
distances = map calculateDistance processedLines;
sum = lib.lists.fold (a: b: a + b) 0 distances;
in
sum