2024 day 19 part 1 but it actually finishes executing in javascript

This commit is contained in:
tristan 2024-12-19 15:53:13 +00:00
parent 136d031345
commit 196cde6dcb
5 changed files with 27 additions and 12 deletions

View file

@ -1,8 +1,6 @@
const input = (await Bun.file(Bun.argv[2]).text()).trim() const input = (await Bun.file(Bun.argv[2]).text()).trim()
// const input = "12345";
const files = []; const files = [];
const spaces = []; const spaces = [];

15
2024/19/solution.js Normal file
View file

@ -0,0 +1,15 @@
const input = (await Bun.file(Bun.argv[2]).text()).trim()
const [towels, desired] = input.split("\n\n")
const regex = new RegExp(`^(${towels.split(", ").join("|")})+$`)
const lines = desired.split("\n")
let count = 0;
for (const line of lines) {
if (regex.test(line)) {count ++}
}
console.log(count)

View file

@ -1,4 +1,4 @@
{input ? "", lib, ...}: let {input ? "", lib, pkgs, ...}: let
inherit (builtins) elemAt filter length; inherit (builtins) elemAt filter length;
exampleIn = lib.readFile ./example.txt; exampleIn = lib.readFile ./example.txt;
@ -8,7 +8,7 @@
towels = elemAt parts 0 |> lib.splitString ", "; towels = elemAt parts 0 |> lib.splitString ", ";
regex = ''(${builtins.concatStringsSep "|" towels})+''; regex = ''(${builtins.concatStringsSep "|" towels})+'';
desired = elemAt parts 1 |> lib.splitString "\n"; desired = elemAt parts 1 |> lib.splitString "\n";
matches = desired |> map (lib.match regex); matches = desired |> map (e: lib.traceSeq e (lib.match regex e));
in { in {
inherit towels regex desired matches; inherit towels regex desired matches;
count = matches count = matches
@ -16,11 +16,17 @@
|> length; |> length;
}; };
input-file = pkgs.writeText "input.txt" input;
bun-run = js-file: pkgs.runCommand "2024day9" {} ''
${lib.getExe pkgs.bun} ${js-file} ${input-file} > $out
'' |> builtins.readFile |> lib.trim;
in { in {
example = mkSolution { example = mkSolution {
text = exampleIn; text = exampleIn;
}; };
real = mkSolution { real = throw "lol this solution is wayy too slow for the real input";
text = input; javascript = {
part1result = lib.trace "this is a dumb and slow solution" (bun-run ./solution.js);
}; };
} }

View file

@ -3,8 +3,8 @@
"aoc-inputs": { "aoc-inputs": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1734614378, "lastModified": 1734622191,
"narHash": "sha256-vEsmquzc9r82OCVx2Q9WjdND7aOy39Oot3QDJcInhXk=", "narHash": "sha256-kWDExTEeBuscWOZNBCMXAqZtNQT0SiQCjp43yEPRQ3g=",
"path": "/tmp/aoc-inputs", "path": "/tmp/aoc-inputs",
"type": "path" "type": "path"
}, },

View file

@ -39,10 +39,6 @@
input = (pkgs.lib.readFile "${aoc-inputs}/${id}"); input = (pkgs.lib.readFile "${aoc-inputs}/${id}");
in { in {
inherit solution; inherit solution;
example = solution example;
example2 = solution example2;
example3 = solution example3;
real = solution input;
test = tix.run [ test = tix.run [
./${id}/solution.test.nix ./${id}/solution.test.nix
]; ];