Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require "pry"
- class Grid
- def initialize(data)
- @counts = Hash.new(0)
- @data = data
- @x_size = @data[0].size
- @y_size = @data.size
- raise "Not a rectangle" unless @data.all?{|row| row.size == @x_size}
- end
- def [](x,y)
- @data[y % @y_size][x % @x_size]
- end
- def add!(a,b,c,d)
- @counts[a+b+c+d] += 1
- @counts[d+c+b+a] += 1
- end
- def run!
- @y_size.times do |x|
- @x_size.times do |y|
- # horizontal
- add! self[x,y], self[x+1,y], self[x+2,y], self[x+3,y]
- # vertical
- add! self[x,y], self[x,y+1], self[x,y+2], self[x,y+3]
- # diagonal
- add! self[x,y], self[x+1,y+1], self[x+2,y+2], self[x+3,y+3]
- # reverse diagonal
- add! self[x,y], self[x+1,y-1], self[x+2,y-2], self[x+3,y-3]
- end
- end
- puts @counts.max_by(&:last).join(":")
- end
- end
- grid = Grid.new(open("grid2.txt").read.split("\n"))
- grid.run!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement