codingtests/solutions/ProjectEuler/011/solve.rb

53 lines
998 B
Ruby
Raw Permalink Normal View History

2012-03-07 13:40:20 +00:00
matrix = []
linenum = 0
ARGF.lines("\n") do |line|
matrix[linenum] = Array.new
line.split.each do |str|
matrix[linenum] << str.to_i
end
linenum += 1
end
max = 0
max = 0;
#Left and right
(0..19).each do |y|
(0..16).each do |x|
cmp = matrix[y][x] * matrix[y][x + 1] * matrix[y][x + 2] * matrix[y][x + 3];
if (cmp > max)
max = cmp
end
end
end
#Vertical
(0..16).each do |y|
(0..19).each do |x|
cmp = matrix[y][x] * matrix[y + 1][x] * matrix[y + 2][x] * matrix[y + 3][x];
if (cmp > max)
max = cmp
end
end
end
#Diagonally left->down
(0..16).each do |y|
(0..16).each do |x|
cmp = matrix[y][x] * matrix[y + 1][x + 1] * matrix[y + 2][x + 2] * matrix[y + 3][x + 3];
if (cmp > max)
max = cmp
end
end
end
#Diagonally right->down
(0..16).each do |y|
(3..19).each do |x|
cmp = matrix[y][x] * matrix[y + 1][x - 1] * matrix[y + 2][x - 2] * matrix[y + 3][x - 3];
if (cmp > max)
max = cmp
end
end
end
puts max