[2018][ruby][11.1]
change oqlwsurxxzllkynuwotmpmrtnkltrwmm
commit 79fbf698d66517bbfc724d1b16d7900e4e8d3d85
author Alpha Chen <alpha.chen@gmail.com>
date
parent nzmosvzw
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)