From 7e122fdcbc266677e83290fef9766f761d99cb9e Mon Sep 17 00:00:00 2001 From: sterni Date: Thu, 1 Dec 2022 17:36:50 +0100 Subject: feat(sterni/aoc/2022): day01 solutions Bonus solution in k as I got sniped by leah2. Change-Id: I806f5b2ac1388159a427bb239bfb1bb7aeb329d7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7490 Tested-by: BuildkiteCI Reviewed-by: sterni --- users/sterni/exercises/aoc/2022/01/1.bqn | 7 +++++++ users/sterni/exercises/aoc/2022/01/1.k | 2 ++ users/sterni/exercises/aoc/2022/default.nix | 3 ++- users/sterni/exercises/aoc/2022/nix.nix | 31 +++++++++++++++++++++++++++-- 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 users/sterni/exercises/aoc/2022/01/1.bqn create mode 100644 users/sterni/exercises/aoc/2022/01/1.k diff --git a/users/sterni/exercises/aoc/2022/01/1.bqn b/users/sterni/exercises/aoc/2022/01/1.bqn new file mode 100644 index 0000000000..f95851e0d9 --- /dev/null +++ b/users/sterni/exercises/aoc/2022/01/1.bqn @@ -0,0 +1,7 @@ +lib ← •Import •path∾"/../../lib.bqn" +input ← lib.ReadDec¨¨ (<"") lib.SplitOn •FLines •path∾"/input" + +cpe ← +´¨ input + +•Out "day 01.1: "∾•Fmt ⌈´cpe +•Out "day 01.2: "∾•Fmt +´3↑∨cpe diff --git a/users/sterni/exercises/aoc/2022/01/1.k b/users/sterni/exercises/aoc/2022/01/1.k new file mode 100644 index 0000000000..295503905f --- /dev/null +++ b/users/sterni/exercises/aoc/2022/01/1.k @@ -0,0 +1,2 @@ + / a better approach is to use the downgraded list for both tasks, as demonstrated by leah2 +(|/e),+/e@3#>e:(+/.'1_)'(&0=#'i)_i:0:"input" diff --git a/users/sterni/exercises/aoc/2022/default.nix b/users/sterni/exercises/aoc/2022/default.nix index ef03cd87e1..23dc2ef701 100644 --- a/users/sterni/exercises/aoc/2022/default.nix +++ b/users/sterni/exercises/aoc/2022/default.nix @@ -1,7 +1,7 @@ { depot, pkgs, lib, ... }: let - inherit (pkgs.buildPackages) cbqn; + inherit (pkgs.buildPackages) cbqn ngn-k; # input files are not checked in meta.ci.skip = true; @@ -12,6 +12,7 @@ depot.nix.readTree.drvTargets { name = "aoc-2022-shell"; packages = [ cbqn + ngn-k depot.tvix.eval ]; }; diff --git a/users/sterni/exercises/aoc/2022/nix.nix b/users/sterni/exercises/aoc/2022/nix.nix index 5bd3e36b53..ca8bfc6e57 100644 --- a/users/sterni/exercises/aoc/2022/nix.nix +++ b/users/sterni/exercises/aoc/2022/nix.nix @@ -1,3 +1,30 @@ -{ ... }: +{ lib ? import }: -{ } +let + chomp = lib.removeSuffix "\n"; + lines = s: builtins.filter builtins.isString (builtins.split "\n" (chomp s)); + sum = builtins.foldl' builtins.add 0; + + day01 = + let + input = + builtins.map + (elf: + sum (builtins.map builtins.fromJSON (lines elf)) + ) + ( + builtins.filter builtins.isString ( + builtins.split "\n\n" (builtins.readFile ./01/input) + ) + ); + in + { + "1" = builtins.foldl' lib.max (-1) input; + "2" = sum (lib.sublist 0 3 (lib.sort (a: b: a >= b) input)); + }; + +in + +{ + inherit day01; +} -- cgit 1.4.1