summaryrefslogtreecommitdiff
path: root/3.jq
blob: 7317c7167b43ced4bb2e4b66fffec3d9f250c83a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# jq --raw-input --slurp -f 3.jq <3-input.txt

def p1(i):
  [
    i |
    scan("(mul\\(\\d+,\\d+\\))") |
    .[] |
    match("(\\d+),(\\d+)") |
    (.captures[0].string|tonumber) * (.captures[1].string|tonumber)
  ] | add;

def p2(i):
  [
    i |
    gsub("\n"; "") |
    splits("do\\(\\)") |
    gsub("don't\\(\\).*"; "") |
    scan("(mul\\(\\d+,\\d+\\))") |
    .[] |
    match("(\\d+),(\\d+)") |
    (.captures[0].string|tonumber) * (.captures[1].string|tonumber)
  ] | add;

[
  "puzzle 1: \(. as $input | p1($input))",
  "puzzle 2: \(. as $input | p2($input))"
] | .[]

# [
#   "puzzle 1: 164730528",
#   "puzzle 2: 70478672"
# ]