Code for the Advent of Code event
aoc
advent-of-code
1json = require 'json'
2
3get_sum = (data) ->
4 sum = 0
5 for k, v in pairs data
6 num = tonumber v
7 if num
8 sum += num
9 elseif type(v) == 'table'
10 sum += get_sum v
11 sum
12
13get_sum_nonred = (data) ->
14 sum = 0
15 for k, v in pairs data
16 k_t = type k
17 v_t = type v
18
19 return 0 if k_t == 'string' and v == 'red'
20
21 if v_t == 'number'
22 sum += v
23 elseif v_t == 'table'
24 sum += get_sum_nonred v
25 sum
26
27sum = (text) ->
28 data = json.decode text
29 get_sum data
30
31sum_nonred = (text) ->
32 data = json.decode text
33 get_sum_nonred data
34
35{ :sum, :sum_nonred }