diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2016-12-12 16:13:21 +0100 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2016-12-12 16:13:21 +0100 |
commit | ac824795650a2682fb4b93deaae70c6f77e5869a (patch) | |
tree | 07b290d83477e227de3e33e9ca81d1455bd02c98 /day10.rb | |
parent | 8c182a892186f7ffe832767b8e39564e8133a45c (diff) | |
download | adventofcode2016-ac824795650a2682fb4b93deaae70c6f77e5869a.tar.gz adventofcode2016-ac824795650a2682fb4b93deaae70c6f77e5869a.tar.xz adventofcode2016-ac824795650a2682fb4b93deaae70c6f77e5869a.zip |
day10 (ruby)
Diffstat (limited to 'day10.rb')
-rw-r--r-- | day10.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/day10.rb b/day10.rb new file mode 100644 index 0000000..5286f95 --- /dev/null +++ b/day10.rb @@ -0,0 +1,28 @@ +b = {} +a = {} + +File.readlines("day10").each { |l| + v = l.split + case v[0] + when "bot" + b[v[1].to_i] = [v[6].to_i + ((v[5] == "bot") ? 0 : 1000), v[11].to_i] + when "value" + (a[v[5].to_i] ||= []) << v[1].to_i + end +} + +loop { + n, x = a.find { |nn, xx| xx.size == 2 } + + break unless n + + lo, hi = x.sort + p n if [lo,hi] == [17,61] + + (a[b[n][0]] ||= []) << lo + (a[b[n][1]] ||= []) << hi + + a.delete(n) +} + +p a.values_at(1000,1001,1002).flatten.inject(:*) |