Day 6.

[?]
Aug 18, 2018, 7:22 AM
75CAQHMCHXJLPQHCYDMAYTYU6ZQEPDOULIJISDTKKE5R7ICBFI4AC

Dependencies

Change contents

  • file addition: day6.rb (----------)
    [2.7]
    def redist banks
    fullest, index1 = banks.each_with_index.max{|a,b| a[0] <=> b[0] }
    inc1 = fullest / banks.length
    inc2 = inc1 + 1
    ex = fullest % banks.length - 1
    banks.each_with_index.map do |s,index|
    inc = if (index - index1 - 1) % banks.length <= ex
    inc2
    else
    inc1
    end
    c = if index == index1
    0
    else
    s
    end
    inc + c
    end
    end
    def until_cycle banks
    Enumerator.new do |y|
    cache = {}
    while !cache.key? banks
    cache[banks] = true
    y.yield banks
    banks = redist banks
    end
    end
    end
    initial_state = Enumerator.new do |y|
    File.open(ARGV[0],"r") do |src|
    src.each_line do |line|
    line.split(/\s/).each do |word|
    num = word.to_i
    y.yield num if num
    end
    end
    end
    end.to_a
    puts until_cycle(initial_state).count