From 9c592395bfc30a96b8b54d12d6f927013caba27c Mon Sep 17 00:00:00 2001 From: Patrick Auernig Date: Sat, 3 Dec 2022 23:52:54 +0100 Subject: [PATCH] Add extra nushell solution for 2022 day 01 part 1 Can't be bothered to add part 2, because that would require recompiling nushell to get dataframes back. --- 2022/day-03/extra/part_one.nu | 42 +++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 2022/day-03/extra/part_one.nu diff --git a/2022/day-03/extra/part_one.nu b/2022/day-03/extra/part_one.nu new file mode 100644 index 0000000..54b3f7d --- /dev/null +++ b/2022/day-03/extra/part_one.nu @@ -0,0 +1,42 @@ +def is-downcase? [] { + find --regex '[A-Z]' | is-empty +} + +def item-priority [item: string] { + let val = ($item | into int -r 36) - 9 + + if ($item | is-downcase?) { + $val + } else { + $val + 26 + } +} + +def main [path = "../inputs/puzzle.txt"] { + open $path + | lines + | each { + let chars = split chars + let len = ($chars | length) + let mid = ($len / 2) + + let df = ($chars | into df) + let left = ($df | slice 0 $mid) + let right = ($df | slice $mid $len) + + let df = ($left | rename "0" "left" | with-column $right --name "right") + let mask = ($df.left | is-in $df.right) + + $left + | rename "0" "left" + | with-column $right --name "right" + | get "left" + | filter-with $mask + | unique + | into nu + | get "left" + | each { |i| item-priority $i } + | math sum + } + | math sum +}