From f33d510a4dda510fa93137a8897230ebf539f435 Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Wed, 6 Dec 2017 10:53:41 +0000 Subject: Day 06 --- day06/part2 | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 day06/part2 (limited to 'day06/part2') diff --git a/day06/part2 b/day06/part2 new file mode 100755 index 0000000..9b8d8de --- /dev/null +++ b/day06/part2 @@ -0,0 +1,45 @@ +#!/usr/bin/env ruby + +input = gets.chomp.split("\t").map(&:to_i) + +def index_of_max(arr) + idx = 0 + max = 0 + + (0...arr.length).each do |i| + if arr[i] > max then + idx = i + max = arr[i] + end + end + + return idx +end + +def redistribute(arr, idx) + new = arr.dup + len = new.length + + blks = new[idx] + new[idx] = 0 + + i = idx + while blks > 0 do + i = (i + 1) % len + new[i] += 1 + blks -= 1 + end + + return new +end + +previous = [] +state = input.dup + +until previous.include?(state) do + newstate = redistribute(state, index_of_max(state)) + previous << state + state = newstate +end + +puts previous.length - previous.index(state) -- cgit v1.2.3