From df293cb0bbc167f361b5b6dca38f770441aec79d Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Mon, 10 Dec 2018 21:14:47 -0800 Subject: [PATCH] [2018][ruby][11.1] --- 2018/ruby/day_11.rb | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 2018/ruby/day_11.rb diff --git a/2018/ruby/day_11.rb b/2018/ruby/day_11.rb new file mode 100644 index 0000000..83ea800 --- /dev/null +++ b/2018/ruby/day_11.rb @@ -0,0 +1,45 @@ +# p ARGF.read.chomp.lines.map(&:chomp) + +INPUT = 7400 + +FuelCell = Struct.new(*%i[ x y ]) do + def rack_id + x + 10 + end + + def power_level + power_level = rack_id * y + power_level += INPUT + power_level *= rack_id + power_level = power_level / 100 % 10 + power_level -= 5 + + power_level + end +end + +grid = Hash.new(0) +(1..300).each {|x| + (1..300).each {|y| + grid[[x,y]] = FuelCell.new(x, y).power_level + } +} + +(44..48).each do |y| + (32..36).each do |x| + print " #{grid[[x,y]]} " + end + puts +end + +squares = Hash.new(0) +(2..299).each {|x| + (2..299).each {|y| + power_level = [[-1, -1], [0, -1], [1, -1], + [-1, 0], [0, 0], [1, 0], + [-1, 1], [0, 1], [1, 1]].map {|(dx,dy)| grid[[x+dx, y+dy]] }.sum + squares[[x,y]] = power_level + } +} + +p squares.max_by(&:last)