advent-of-code/2022/day-03/extra/part_one.nu
Patrick Auernig 9c592395bf 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-12-03 23:52:54 +01:00

43 lines
930 B
Plaintext

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
}