Hello readers,
It is true that I haven't been posting for a long time. I was bothered by my university entrance preparation. Now that I managed to enter a university, which is Binus International University in Jakarta and majoring in Computer Science, I can finally post again.
I was doing a Project Euler problem earlier today.
Link to Problem 11 : http://projecteuler.net/problem=11
To solve this seemingly confusing problem, I use VB.NET.
Here is the solution.
That was the code, it consists of four major processes, which is to search for the largest product of four numbers :
1. Horizontally
2. Vertically
3. Diagonally from top left to bottom right
4. Diagonally from bottom left to top right
Running the code above, we will obtain the answer, which is 70600674.
Take your time to understand the code, no need to hurry.
I will be back with more solutions.
Happy Coding,
Cyber Frost
It is true that I haven't been posting for a long time. I was bothered by my university entrance preparation. Now that I managed to enter a university, which is Binus International University in Jakarta and majoring in Computer Science, I can finally post again.
I was doing a Project Euler problem earlier today.
Link to Problem 11 : http://projecteuler.net/problem=11
To solve this seemingly confusing problem, I use VB.NET.
Here is the solution.
Module Module1
Sub Main()
Dim list1 As String = "08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48 "'create list to be processed later onEnd Sub
Dim list2(400) As Integer
Dim x, i As Integer
i = 1
For x = 0 To 399
list2(x) = CInt(Mid(list1, i, 2))
i = i + 3
Next
i = 1
For x = 0 To 399
If i = 20 Then
Console.Write(list2(x))
Console.WriteLine()
i = 1
ElseIf i < 20 Then
i = i + 1
Console.Write(list2(x) & " ")
End If
Next
Console.WriteLine()
'processing stages
Dim temp, largest, pos As Integer
'horizontal
For x = 0 To 395
If x = 16 Then x = 20
If x = 36 Then x = 40
If x = 56 Then x = 60
If x = 76 Then x = 80
If x = 96 Then x = 100
If x = 116 Then x = 120
If x = 136 Then x = 140
If x = 156 Then x = 160
If x = 176 Then x = 180
If x = 196 Then x = 200
If x = 216 Then x = 220
If x = 236 Then x = 240
If x = 256 Then x = 260
If x = 276 Then x = 280
If x = 296 Then x = 300
If x = 316 Then x = 320
If x = 336 Then x = 340
If x = 356 Then x = 360
If x = 376 Then x = 380
If x = 396 Then x = 400
temp = list2(x) * list2(x + 1) * list2(x + 2) * list2(x + 3)
If temp > largest Then
largest = temp
pos = x
End If
Next
Console.WriteLine("Numbers(H) : " & list2(pos) & ", " & list2(pos + 1) & ", " & list2(pos + 2) & ", " & list2(pos + 3))
Console.WriteLine("Product(H) : " & largest)
'vertical
temp = 0
largest = 0
For x = 0 To 319
temp = list2(x) * list2(x + 20) * list2(x + 40) * list2(x + 60)
If temp > largest Then
largest = temp
pos = x
End If
Next
Console.WriteLine("Numbers(V) : " & list2(pos) & ", " & list2(pos + 20) & ", " & list2(pos + 40) & ", " & list2(pos + 60))
Console.WriteLine("Product(V) : " & largest)
'diagonal1
temp = 0
largest = 0
For x = 0 To 336
If x = 16 Then x = 20
If x = 36 Then x = 40
If x = 56 Then x = 60
If x = 76 Then x = 80
If x = 96 Then x = 100
If x = 116 Then x = 120
If x = 136 Then x = 140
If x = 156 Then x = 160
If x = 176 Then x = 180
If x = 196 Then x = 200
If x = 216 Then x = 220
If x = 236 Then x = 240
If x = 256 Then x = 260
If x = 276 Then x = 280
If x = 296 Then x = 300
If x = 316 Then x = 320
temp = list2(x) * list2(x + 11) * list2(x + 22) * list2(x + 33)
If temp > largest Then
largest = temp
pos = x
End If
Next
Console.WriteLine("Numbers(D1) : " & list2(pos) & ", " & list2(pos + 11) & ", " & list2(pos + 22) & ", " & list2(pos + 33))
Console.WriteLine("Product(D1) : " & largest)
'diagonal2
temp = 0
largest = 0
For x = 396 To 60 Step -1
If x = 379 Then x = 376
If x = 359 Then x = 356
If x = 339 Then x = 336
If x = 319 Then x = 316
If x = 299 Then x = 296
If x = 279 Then x = 276
If x = 259 Then x = 256
If x = 239 Then x = 236
If x = 219 Then x = 216
If x = 199 Then x = 196
If x = 179 Then x = 176
If x = 159 Then x = 156
If x = 139 Then x = 136
If x = 119 Then x = 116
If x = 99 Then x = 96
If x = 79 Then x = 76
If x = 59 Then x = 56
temp = list2(x) * list2(x - 19) * list2(x - 38) * list2(x - 57)
If temp > largest Then
largest = temp
pos = x
End If
Next
Console.WriteLine("Numbers(D2) : " & list2(pos) & ", " & list2(pos - 19) & ", " & list2(pos - 38) & ", " & list2(pos - 57))
Console.WriteLine("Product(D2) : " & largest)
End Module
That was the code, it consists of four major processes, which is to search for the largest product of four numbers :
1. Horizontally
2. Vertically
3. Diagonally from top left to bottom right
4. Diagonally from bottom left to top right
Running the code above, we will obtain the answer, which is 70600674.
Take your time to understand the code, no need to hurry.
I will be back with more solutions.
Happy Coding,
Cyber Frost
No comments:
Post a Comment