Functions,
001,
002,
003,
004,
005,
006,
007,
008,
009,
010,
011,
012,
013,
014,
015,
016,
017,
018,
019,
020,
021,
022,
023,
024,
025,
026,
027,
028,
029,
030,
031,
032,
033,
034,
035,
036,
037, 038, 039, 040, 041, 042, 043, 044, 045, 046, 047, 048, 049, 050, 051, 052, 053, 054, 055, 056, 057, 058, 059, 060, 061, 062, 063, 064, 065, 066,
067, 068, 069, 070, 071, 072, 073, 074, 075, 076, 077, 078, 079, 080, 081, 082, 083, 084, 085, 086, 087, 088, 089, 090, 091, 092, 093, 094, 095, 096, 097, 098, 099, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560,
<?php
/*****************************
* ProjectEuler - Problem 11
* By Ross Marks
*****************************
* In the 20×20 grid below, four numbers along a diagonal line have been marked in red.
*
* 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
*
* The product of these numbers is 26 × 63 × 78 × 14 = 1788696.
*
* What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?
****************************/
//$time_start = microtime(true);
$grid[0] = array(08, 02, 22, 97, 38, 15, 00, 40, 00, 75, 04, 05, 07, 78, 52, 12, 50, 77, 91, 08);
$grid[1] = array(49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 04, 56, 62, 00);
$grid[2] = array(81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 03, 49, 13, 36, 65);
$grid[3] = array(52, 70, 95, 23, 04, 60, 11, 42, 69, 24, 68, 56, 01, 32, 56, 71, 37, 02, 36, 91);
$grid[4] = array(22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80);
$grid[5] = array(24, 47, 32, 60, 99, 03, 45, 02, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50);
$grid[6] = array(32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70);
$grid[7] = array(67, 26, 20, 68, 02, 62, 12, 20, 95, 63, 94, 39, 63, 08, 40, 91, 66, 49, 94, 21);
$grid[8] = array(24, 55, 58, 05, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72);
$grid[9] = array(21, 36, 23, 09, 75, 00, 76, 44, 20, 45, 35, 14, 00, 61, 33, 97, 34, 31, 33, 95);
$grid[10] = array(78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 03, 80, 04, 62, 16, 14, 09, 53, 56, 92);
$grid[11] = array(16, 39, 05, 42, 96, 35, 31, 47, 55, 58, 88, 24, 00, 17, 54, 24, 36, 29, 85, 57);
$grid[12] = array(86, 56, 00, 48, 35, 71, 89, 07, 05, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58);
$grid[13] = array(19, 80, 81, 68, 05, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 04, 89, 55, 40);
$grid[14] = array(04, 52, 08, 83, 97, 35, 99, 16, 07, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66);
$grid[15] = array(88, 36, 68, 87, 57, 62, 20, 72, 03, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69);
$grid[16] = array(04, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 08, 46, 29, 32, 40, 62, 76, 36);
$grid[17] = array(20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 04, 36, 16);
$grid[18] = array(20, 73, 35, 29, 78, 31, 90, 01, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 05, 54);
$grid[19] = array(01, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 01, 89, 19, 67, 48);
$high1 = "0,3";
$high2 = "1,4";
$high3 = "2,5";
$high4 = "3,6";
$current1 = ""; //co-ords $x,$y
$current2 = "";
$current3 = "";
$current4 = "";
$cval = 0;
$chigh = 0;
/***
* Horizontal
*/
for($y=0; $y<=19;$y++){
for($x=0; $x<=16; $x++){
$current1 = "$y,$x";
$current2 = "$y,".strval($x+1);
$current3 = "$y,".strval($x+2);
$current4 = "$y,".strval($x+3);
$cval = $grid[$y][$x]*$grid[$y][$x+1]*$grid[$y][$x+2]*$grid[$y][$x+3];
if($cval > $chigh){
$high1 = "$y,$x";
$high2 = "$y,".strval($x+1);
$high3 = "$y,".strval($x+2);
$high4 = "$y,".strval($x+3);
$chigh = $grid[$y][$x]*$grid[$y][$x+1]*$grid[$y][$x+2]*$grid[$y][$x+3];
}
print_board();
usleep(7000);
}
}
/***
* Vertical
*/
for($x=0; $x<=19;$x++){
for($y=0; $y<=16; $y++){
$current1 = "$y,$x";
$current2 = strval($y+1).",$x";
$current3 = strval($y+2).",$x";
$current4 = strval($y+3).",$x";
$cval = $grid[$y][$x]*$grid[$y+1][$x]*$grid[$y+2][$x]*$grid[$y+3][$x];
if($cval > $chigh){
$high1 = "$y,$x";
$high2 = strval($y+1).",$x";
$high3 = strval($y+2).",$x";
$high4 = strval($y+3).",$x";
$chigh = $grid[$y][$x]*$grid[$y+1][$x]*$grid[$y+2][$x]*$grid[$y+3][$x];
}
print_board();
usleep(7000);
}
}
/***
* Diagonal 1
*/
for($y=0; $y<=19;$y++){
for($x=0; $x<=19; $x++){
if(isset($grid[$y+3][$x+3])){
$current1 = "$y,$x";
$current2 = strval($y+1).",".strval($x+1);
$current3 = strval($y+2).",".strval($x+2);
$current4 = strval($y+3).",".strval($x+3);
$cval = $grid[$y][$x]*$grid[$y+1][$x+1]*$grid[$y+2][$x+2]*$grid[$y+3][$x+3];
if($cval > $chigh){
$high1 = "$y,$x";
$high2 = strval($y+1).",".strval($x+1);
$high3 = strval($y+2).",".strval($x+2);
$high4 = strval($y+3).",".strval($x+3);
$chigh = $grid[$y][$x]*$grid[$y+1][$x+1]*$grid[$y+2][$x+2]*$grid[$y+3][$x+3];
}
print_board();
usleep(7000);
}
}
}
/***
* Diagonal 2
*/
for($y=0; $y<=19;$y++){
for($x=0; $x<=19; $x++){
if(isset($grid[$y+3][$x-3])){
$current1 = "$y,$x";
$current2 = strval($y+1).",".strval($x-1);
$current3 = strval($y+2).",".strval($x-2);
$current4 = strval($y+3).",".strval($x-3);
$cval = $grid[$y][$x]*$grid[$y+1][$x-1]*$grid[$y+2][$x-2]*$grid[$y+3][$x-3];
if($cval > $chigh){
$high1 = "$y,$x";
$high2 = strval($y+1).",".strval($x-1);
$high3 = strval($y+2).",".strval($x-2);
$high4 = strval($y+3).",".strval($x-3);
$chigh = $grid[$y][$x]*$grid[$y+1][$x-1]*$grid[$y+2][$x-2]*$grid[$y+3][$x-3];
}
print_board();
usleep(7000);
}
}
}
//print_board();
//echo "Awnser: ".$chigh."\n";
//$time_end = microtime(true);
//$execution_time = ($time_end - $time_start)/60;
//echo 'Total Execution Time: '.$execution_time;
function print_board(){
global $grid;
global $high1, $high2, $high3, $high4;
global $current1, $current2, $current3, $current4;
global $cval, $chigh;
system('clear');
for($y=0; $y<=19;$y++){
for($x=0; $x<=19; $x++){
$color = "\e[37m";
if($y.",".$x == $high1 || $y.",".$x == $high2 || $y.",".$x == $high3 || $y.",".$x == $high4){ $color = "\e[91m"; }
if($y.",".$x == $current1 || $y.",".$x == $current2 || $y.",".$x == $current3 || $y.",".$x == $current4){ $color = "\e[92m"; }
$toprint = str_pad($grid[$y][$x], 2, '0', STR_PAD_LEFT);
echo $color.$toprint." ";
}
echo "\n";
}
echo "\e[1mHigh: \e[4m$chigh";
if($cval > 0){ echo "\e[0m || \e[1mCurrent: \e[4m$cval"; }
echo "\e[0m\n";
}
?>