Guest User

Untitled

a guest
Sep 20th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.56 KB | None | 0 0
  1. package com.company;
  2. /*
  3. In the 20×20 grid below, four numbers along a diagonal line have been marked in red.
  4.  
  5. 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
  6. 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
  7. 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
  8. 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
  9. 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
  10. 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
  11. 32 98 81 28 64 23 67 10(26)38 40 67 59 54 70 66 18 38 64 70
  12. 67 26 20 68 02 62 12 20 95(63)94 39 63 08 40 91 66 49 94 21
  13. 24 55 58 05 66 73 99 26 97 17(78)78 96 83 14 88 34 89 63 72
  14. 21 36 23 09 75 00 76 44 20 45 35(14)00 61 33 97 34 31 33 95
  15. 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
  16. 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
  17. 86 56 00 48 35 71[89]07 05 44 44 37 44 60 21 58 51 54 17 58
  18. 19 80 81 68 05[94]47 69 28 73 92 13 86 52 17 77 04 89 55 40
  19. 04 52 08 83[97]35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
  20. 88 36 68[87]57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
  21. 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
  22. 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
  23. 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
  24. 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
  25.  
  26. The product of these numbers is 26 × 63 × 78 × 14 = 1788696.
  27.  
  28. What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?
  29.  
  30. Prints:
  31. 89 * 94 * 97 * 87 = 70600674
  32.  
  33. Coords:
  34. 1: 12.6
  35. 2: 13.5
  36. 3: 14.4
  37. 4: 15.3
  38.  
  39. */
  40. public class Main {
  41.  
  42. public static void main(String[] args) {
  43.  
  44. // Initiating the grid
  45.  
  46. int[][] grid = {
  47. {8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8},
  48. {49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0},
  49. {81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65},
  50. {52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91},
  51. {22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80},
  52. {24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50},
  53. {32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70},
  54. {67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21},
  55. {24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72},
  56. {21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95},
  57. {78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92},
  58. {16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57},
  59. {86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58},
  60. {19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40},
  61. {4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66},
  62. {88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69},
  63. {4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36},
  64. {20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16},
  65. {20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 6, 81, 16, 23, 57, 5, 54},
  66. {1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48}};
  67.  
  68.  
  69. // initiating variables
  70. // int max for storing the largest product
  71.  
  72. int max = 0, check;
  73. int indexC1 = 0, indexC2 = 0, indexC3 = 0, indexC4 = 0;
  74. int indexR1 = 0, indexR2 = 0, indexR3 = 0, indexR4 = 0;
  75.  
  76. // nestled for-loops is needed when checking every variable in a multidimensional array
  77.  
  78. for (int column = 0; column < grid.length; column++) {
  79.  
  80. for (int row = 0; row < grid.length; row++) {
  81.  
  82. // ifs to keep index from going out of bounds
  83.  
  84. if (row + 3 < grid.length) {
  85.  
  86. // first checking 4 number forward
  87.  
  88. check = grid[column][row] * grid[column][row + 1] * grid[column][row + 2] * grid[column][row + 3];
  89. if (check > max) {
  90. max = check;
  91.  
  92. // storing the coordinates for access later
  93.  
  94. indexC1 = column;
  95. indexR1 = row;
  96. indexC2 = column;
  97. indexR2 = row + 1;
  98. indexC3 = column;
  99. indexR3 = row + 2;
  100. indexC4 = column;
  101. indexR4 = row + 3;
  102. }
  103. }
  104. if (column + 3 < grid.length) {
  105.  
  106. // checking 4 numbers downward
  107.  
  108. check = grid[column][row] * grid[column + 1][row] * grid[column + 2][row] * grid[column + 3][row];
  109. if (check > max) {
  110. max = check;
  111. indexC1 = column;
  112. indexR1 = row;
  113. indexC2 = column + 1;
  114. indexR2 = row;
  115. indexC3 = column + 2;
  116. indexR3 = row;
  117. indexC4 = column + 3;
  118. indexR4 = row;
  119. }
  120. }
  121. if ((row + 3 < grid.length) && (column + 3 < grid.length)) {
  122.  
  123. // checking 4 numbers diagonally down
  124.  
  125. check = grid[column][row] * grid[column + 1][row + 1] * grid[column + 2][row + 2] * grid[column + 3][row + 3];
  126. if (check > max) {
  127. max = check;
  128. indexC1 = column;
  129. indexR1 = row;
  130. indexC2 = column + 1;
  131. indexR2 = row + 1;
  132. indexC3 = column + 2;
  133. indexR3 = row + 2;
  134. indexC4 = column + 3;
  135. indexR4 = row + 3;
  136. }
  137. }
  138. if ((row > 3) && (column + 3 < grid.length)) {
  139.  
  140. // checking 4 numbers diagonally up
  141.  
  142. check = grid[column][row] * grid[column + 1][row - 1] * grid[column + 2][row - 2] * grid[column + 3][row - 3];
  143. if (check > max) {
  144. max = check;
  145. indexC1 = column;
  146. indexR1 = row;
  147. indexC2 = column + 1;
  148. indexR2 = row - 1;
  149. indexC3 = column + 2;
  150. indexR3 = row - 2;
  151. indexC4 = column + 3;
  152. indexR4 = row - 3;
  153. }
  154. }
  155. }
  156. }
  157.  
  158. // print the numbers and the highest product in the grid
  159.  
  160. System.out.printf("\n%d * %d * %d * %d = %d", grid[indexC1][indexR1],grid[indexC2][indexR2],grid[indexC3][indexR3],grid[indexC4][indexR4],max);
  161.  
  162. // print out coordinates for reference
  163.  
  164. System.out.printf("\n\n1: %d.%d \n2: %d.%d \n3: %d.%d \n4: %d.%d ", indexC1, indexR1, indexC2, indexR2, indexC3, indexR3, indexC4, indexR4);
  165. }
  166. }
Add Comment
Please, Sign In to add comment