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/part1 | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100755 day06/part1 (limited to 'day06/part1') diff --git a/day06/part1 b/day06/part1 new file mode 100755 index 0000000..e615e84 --- /dev/null +++ b/day06/part1 @@ -0,0 +1,47 @@ +#!/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 +steps = 0 + +until previous.include?(state) do + newstate = redistribute(state, index_of_max(state)) + previous << state + state = newstate + steps += 1 +end + +puts steps -- cgit v1.2.3