Advertisement
t_a_w

Code counts

Apr 14th, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.94 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require "pry"
  4.  
  5. class Grid
  6.   def initialize(data)
  7.     @counts = Hash.new(0)
  8.     @data = data
  9.     @x_size = @data[0].size
  10.     @y_size = @data.size
  11.     raise "Not a rectangle" unless @data.all?{|row| row.size == @x_size}
  12.   end
  13.  
  14.   def [](x,y)
  15.     @data[y % @y_size][x % @x_size]
  16.   end
  17.  
  18.   def add!(a,b,c,d)
  19.     @counts[a+b+c+d] += 1
  20.     @counts[d+c+b+a] += 1
  21.   end
  22.  
  23.   def run!
  24.     @y_size.times do |x|
  25.       @x_size.times do |y|
  26.         # horizontal
  27.         add! self[x,y], self[x+1,y], self[x+2,y], self[x+3,y]
  28.         # vertical
  29.         add! self[x,y], self[x,y+1], self[x,y+2], self[x,y+3]
  30.         # diagonal
  31.         add! self[x,y], self[x+1,y+1], self[x+2,y+2], self[x+3,y+3]
  32.         # reverse diagonal
  33.         add! self[x,y], self[x+1,y-1], self[x+2,y-2], self[x+3,y-3]
  34.       end
  35.     end
  36.     puts @counts.max_by(&:last).join(":")
  37.   end
  38. end
  39.  
  40.  
  41. grid = Grid.new(open("grid2.txt").read.split("\n"))
  42. grid.run!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement