about summary refs log tree commit diff
path: root/day08.rb
blob: a51543bea255eae07143e3cb50ec12d3948d8fe4 (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
33
34
35
36
37
38
39
40
41
42
43
d=File.read("day08").split.map(&:to_i)

def t(d)
  return 0  if d.empty?

  len = d.shift
  md = d.shift

  mds = 0
  (0...len).map {
    mds += t(d)
  }
  mds += d.shift(md).sum
end

def s(d)
  return 0  if d.empty?

  len = d.shift
  md = d.shift

  mds = (0...len).map {
    s(d)
  }
  
  m = d.shift(md)

  if len == 0
    m.sum
  else
    m.map { |i|
      if i <=0 || i > mds.size
        0
      else
        mds[i-1]
      end
    }.sum
  end
end

p t(d.clone)  # 35852
p s(d.clone)  # 33422