-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path011.rb
87 lines (71 loc) · 1.59 KB
/
011.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env ruby
array = Array.new
IO.foreach('011.txt') { |line|
# puts line
subarray=Array.new
subarray.push(line.split(' '))
array.push(subarray.flatten.collect{ |s| s.to_i})
}
product_length = 4
size = array.size
maxProduct = 0
maxHorizontal = 0
maxVertical = 0
maxForwardDiag = 0
maxBackwardDiag = 0
# horizontal check
x=0
while x < size
y = 0
while y <= size-product_length
product = array[x][y]*array[x][y+1]*array[x][y+2]*array[x][y+3]
if product > maxHorizontal
maxHorizontal = product
end
y += 1
end
x += 1
end
puts "Max horizontal product: ",maxHorizontal
# vertical check
x=0
while x < size
y = 0
while y <= size-product_length
product = array[y][x]*array[y+1][x]*array[y+2][x]*array[y+3][x]
if product > maxVertical
maxVertical = product
end
y += 1
end
x += 1
end
puts "Max vertical product: ",maxVertical
# Forward slash "\" check
x = 0
y = 0
while x <= size-product_length
while y <= size-product_length
product = array[y][x]*array[y+1][x+1]*array[y+2][x+2]*array[y+3][x+3]
if product > maxForwardDiag
maxForwardDiag = product
end
y += 1
end
x += 1
end
puts "Max forward diagonal product: ",maxForwardDiag
# back diagonal "/" product
x = product_length-1
y = 0
while x < product_length
while y <= size-product_length
product = array[y][x]*array[y-1][x-1]*array[y-2][x-2]*array[y-3][x-3]
if product > maxBackwardDiag
maxBackwardDiag = product
end
y += 1
end
x += 1
end
puts "Max backward diagonal product: ",maxBackwardDiag