Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,859 questions

51,780 answers

573 users

How to find max product of 4 adjacent numbers in the same direction in a 20×20 grid with PHP

1 Answer

0 votes
function printGrid($grid, $size) {
    for ($i = 0; $i < $size; $i++) {
        for ($j = 0; $j < $size; $j++) {
            printf("%4d", $grid[$i][$j]);
        }
        echo "\n";
    }
}
 
function generateRandomMatrix($size)  {
    $grid = array_fill(0, $size, array_fill(0, $size, 0));
     
    for ($i = 0; $i < $size; $i++) {
        for ($j = 0; $j < $size; $j++) {
            $grid[$i][$j] = rand(1, 100);
        }
    }
    return $grid;
}
 
function FindMaxProduct($grid, $size) {
        $max = 0; $product = 0;
        $n1 = 0; $n2 = 0; $n3 = 0; $n4 = 0;
            
        for ($i = 0; $i < $size; $i++) {
            for ($j = 0; $j < $size - 3; $j++) {
                $product = $grid[$i][$j] * $grid[$i][$j + 1] * $grid[$i][$j + 2] * $grid[$i][$j + 3];
                if ($product > $max) {
                    $n1 = $grid[$i][$j]; $n2 = $grid[$i][$j + 1]; $n3 = $grid[$i][$j + 2]; $n4 = $grid[$i][$j + 3];
                    $max = $product;
                }
            }
        }
                       
        for ($i = 0; $i < $size; $i++) {
            for ($j = 0; $j < $size - 3; $j++) {
                $product = $grid[$j][$i] * $grid[$j + 1][$i] * $grid[$j + 2][$i] * $grid[$j + 3][$i];
                if ($product > $max) {
                    $n1 = $grid[$i][$j]; $n2 = $grid[$j + 1][$i]; $n3 = $grid[$j + 2][$i]; $n4 = $grid[$j + 2][$i];
                    $max = $product;
                }
            }
        }
               
        for ($i = 0; $i < $size - 3; $i++) {
            for ($j = 0; $j < $size - 3; $j++) {
                $product = $grid[$j][$i] * $grid[$j + 1][$i + 1] * $grid[$j + 2][$i + 2] * $grid[$j + 3][$i + 3];
                if ($product > $max) {
                    $n1 = $grid[$j][$i]; $n2 = $grid[$j + 1][$i + 1]; $n3 = $grid[$j + 2][$i + 2]; $n4 = $grid[$j + 3][$i + 3];
                    $max = $product;
                }
            }
        }
               
        for ($i = 0; $i < $size - 3; $i++) {
            for ($j = 3; $j < $size; $j++) {
                $product = $grid[$j][$i] * $grid[$j - 1][$i + 1] * $grid[$j - 2][$i + 2] * $grid[$j - 3][$i + 3];
                if ($product > $max) {
                    $n1 = $grid[$j][$i]; $n2 = $grid[$j - 1][$i + 1]; $n3 = $grid[$j - 2][$i + 2]; $n4 = $grid[$j - 3][$i + 3];
                    $max = $product;
                }
            }
        }
                        
        echo "\n" . $n1 . " * " . $n2 . " * " . $n3 . " * " . $n4 . " = ";
     
        return $max;
    }
         
         
$grid = generateRandomMatrix(20);
 
printGrid($grid, 20);
 
echo FindMaxProduct($grid, 20);
 
 
 
 
/*
run:
 
  35  47 100  43  11  58  60  86  96  74  43  92  99  62  93  28  69  48  40  38
  49  45   3  13  52  50  49  85  73  70  75  84 100   1  64  66  96  67  47  52
  14  90  40  26  65  66  30  98  57  17  99  26   8  53  72  25  81  86  33  83
   7  25  17  77  56  30  81   4  48  19  18 100  88  68  67  98  66  50  50  79
  56  74  87  58  48  31  49  15  63  46 100  50  15  60  19  66  38  74  10  73
  42  39  35  16  65  31  21  35  78  77  54  91  85  31  41  51  58  70  48  91
  81  14  44  69   9  94  26  72  71  15  51  85  28   6   5   9  90  73  34  49
  39  92  60  62  71  60  17  39  10  50  46  56  24  29  73  56  27  75  72  56
  52  74  54  89   4  45   8  13  52  20  96  38  57  87  47  70  77  66  79  35
  11  27  94  40  99  37  88  35  20  76  40  71  70  10  47  59  53  36  49   2
  44  59  45  59  81  92  22  78  56  33  42  32  93  68  46  73  16  23  22  92
  95  50  77  42  42  41  74  48  72   5  97  85  20  24  51   6  96  20  18  30
  40  92  47  87  86  60   7  47  15  94  66  61  38  47  32  47  50  57  62  46
  92   4  98  58  27  19  19  97  15  52  84  98  27  58  47  15  56  11  81  23
  85  44  25  94  36  96   8  89  70  34  54   5  66  30  98  90  38  33  10  63
  91  57  20  40  78   8  90  96  16  29  81  52  52  65  89  39  80  92  65  39
  69  38  85   2  34  50  58   8  16  23  13  62  10  27  41   2  10   3  70  26
  89  87  35  96  92  64  72  35  70  35  90  72  11  24  87  35  89  62  72  73
  41  34  19  44  87  61  83  34  98  62  20  94  68  92  26  62  89  65  14  57
  50  15  93  50  94  88  67  16  24  74  46  30  47  65  89  19  32  78  26  27
 
95 * 92 * 98 * 94 = 80512880
   
*/

 



answered Nov 2, 2023 by avibootz
edited Nov 2, 2023 by avibootz
...