Posted on Wed, 21/12/2011 - 10:21
Question
In the 20 x 20 grid below, four numbers along a diagonal line have been marked in red (bold).
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
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
The product of these numbers is 26 x 63 x 78 x 14 = 1788696.
What is the greatest product of four adjacent numbers in any direction (up, down, left, right, or diagonally) in the 20 x 20 grid?
Solution
$data[] = explode(' ', '08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08');
$data[] = explode(' ', '49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00');
$data[] = explode(' ', '81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65');
$data[] = explode(' ', '52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91');
$data[] = explode(' ', '22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80');
$data[] = explode(' ', '24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50');
$data[] = explode(' ', '32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70');
$data[] = explode(' ', '67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21');
$data[] = explode(' ', '24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72');
$data[] = explode(' ', '21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95');
$data[] = explode(' ', '78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92');
$data[] = explode(' ', '16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57');
$data[] = explode(' ', '86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58');
$data[] = explode(' ', '19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40');
$data[] = explode(' ', '04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66');
$data[] = explode(' ', '88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69');
$data[] = explode(' ', '04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36');
$data[] = explode(' ', '20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16');
$data[] = explode(' ', '20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54');
$data[] = explode(' ', '01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48');
$greatest = $_product = 0;
for ($y = 0; $y < count($data); $y++) {
for ($x = 0; $x < count($data[$y]); $x++) {
// Store horizontal numbers based on X position (backwards and forward).
$_num[0] = array($data[$y][$x]);
if (!isset($data[$y][$x + 1])) { $_num[0][] = 0; } else { $_num[0][] = $data[$y][$x + 1]; }
if (!isset($data[$y][$x + 2])) { $_num[0][] = 0; } else { $_num[0][] = $data[$y][$x + 2]; }
if (!isset($data[$y][$x + 3])) { $_num[0][] = 0; } else { $_num[0][] = $data[$y][$x + 3]; }
$_num[1] = array($data[$y][$x]);
if (!isset($data[$y][$x - 1])) { $_num[1][] = 0; } else { $_num[1][] = $data[$y][$x - 1]; }
if (!isset($data[$y][$x - 2])) { $_num[1][] = 0; } else { $_num[1][] = $data[$y][$x - 2]; }
if (!isset($data[$y][$x - 3])) { $_num[1][] = 0; } else { $_num[1][] = $data[$y][$x - 3]; }
// Vertical numbers from X point.
$_num[2] = array($data[$y][$x]);
if (!isset($data[$y + 1][$x])) { $_num[2][] = 0; } else { $_num[2][] = $data[$y + 1][$x]; }
if (!isset($data[$y + 2][$x])) { $_num[2][] = 0; } else { $_num[2][] = $data[$y + 2][$x]; }
if (!isset($data[$y + 3][$x])) { $_num[2][] = 0; } else { $_num[2][] = $data[$y + 3][$x]; }
$_num[3] = array($data[$y][$x]);
if (!isset($data[$y - 1][$x])) { $_num[3][] = 0; } else { $_num[3][] = $data[$y - 1][$x]; }
if (!isset($data[$y - 2][$x])) { $_num[3][] = 0; } else { $_num[3][] = $data[$y - 2][$x]; }
if (!isset($data[$y - 3][$x])) { $_num[3][] = 0; } else { $_num[3][] = $data[$y - 3][$x]; }
// Diagonal position (top left to down right).
$_num[4] = array($data[$y][$x]);
if (!isset($data[$y + 1][$x + 1])) { $_num[4][] = 0; } else { $_num[4][] = $data[$y + 1][$x + 1]; }
if (!isset($data[$y + 2][$x + 2])) { $_num[4][] = 0; } else { $_num[4][] = $data[$y + 2][$x + 2]; }
if (!isset($data[$y + 3][$x + 3])) { $_num[4][] = 0; } else { $_num[4][] = $data[$y + 3][$x + 3]; }
$_num[5] = array($data[$y][$x]);
if (!isset($data[$y - 1][$x - 1])) { $_num[5][] = 0; } else { $_num[5][] = $data[$y - 1][$x - 1]; }
if (!isset($data[$y - 2][$x - 2])) { $_num[5][] = 0; } else { $_num[5][] = $data[$y - 2][$x - 2]; }
if (!isset($data[$y - 3][$x - 3])) { $_num[5][] = 0; } else { $_num[5][] = $data[$y - 3][$x - 3]; }
// Diagonal position (top right to down left).
$_num[6] = array($data[$y][$x]);
if (!isset($data[$y + 1][$x - 1])) { $_num[6][] = 0; } else { $_num[6][] = $data[$y + 1][$x - 1]; }
if (!isset($data[$y + 2][$x - 2])) { $_num[6][] = 0; } else { $_num[6][] = $data[$y + 2][$x - 2]; }
if (!isset($data[$y + 3][$x - 3])) { $_num[6][] = 0; } else { $_num[6][] = $data[$y + 3][$x - 3]; }
$_num[7] = array($data[$y][$x]);
if (!isset($data[$y - 1][$x + 1])) { $_num[7][] = 0; } else { $_num[7][] = $data[$y - 1][$x + 1]; }
if (!isset($data[$y - 2][$x + 2])) { $_num[7][] = 0; } else { $_num[7][] = $data[$y - 2][$x + 2]; }
if (!isset($data[$y - 3][$x + 3])) { $_num[7][] = 0; } else { $_num[7][] = $data[$y - 3][$x + 3]; }
foreach ($_num as $__num) {
$_product = $__num[0] * $__num[1] * $__num[2] * $__num[3];
if ($_product > $greatest) {
$greatest = $_product;
}
}
}
}
echo $greatest;
Time taken to execute: 0.0143 second.
Answer
70600674
I adore your blog post..
I adore your blog post.. comfortable colours & motif. Does a person design and style this amazing site on your own or maybe do anyone bring in help to make it work in your case Plz react seeing that I!m aiming to style my personal website and would want to find out exactly where ough obtained this kind of from. thank you
linux
Thanks for your comment, this
Thanks for your comment, this blog was designed by me myself. I love the idea of having simplicity and vibrant colours all around :-)
Add new comment