In dem nachfolgenden 20×20 Gitter sind vier Nummern entlang einer Diagonalen Linie grün markiert:
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
Das Produkt dieser Zahlen ist 1788696.
Was ist das größte Produkt von vier Zahlen in einer Linie (horizontal, vertikal oder diagonal)?
Lösung
Dieses Problem löst man am einfachsten mit einem Scan-Algorithmus analog zu der Aufgabe mit der 1000-stelligen Zahl.
Man braucht vier Schleifen für horizontale, vertikale und diagonale Suche:
m = [08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
% ...
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48];
test = zeros(1,4);
maxProdukt = 0;
for i = 1 : 20
for j = 1 : 17
for k = 0 : 3
test(k + 1) = m(i, j+k);
end
produkt = prod(test);
if produkt > maxProdukt
maxProdukt = produkt;
end
end
end
for i = 1 : 17
for j = 1 : 20
for k = 0 : 3
test(k + 1) = m(i+k, j);
end
produkt = prod(test);
if produkt > maxProdukt
maxProdukt = produkt;
end
end
end
for i = 1 : 17
for j = 1 : 17
for k = 0 : 3
test(k + 1) = m(i+k, j+k);
end
produkt = prod(test);
if produkt > maxProdukt
maxProdukt = produkt;
end
end
end
for i = 1 : 17
for j = 4 : 20
for k = 0 : 3
test(k + 1) = m(i+k, j-k);
end
produkt = prod(test);
if produkt > maxProdukt
maxProdukt = produkt;
end
end
end
maxProdukt
Ergebnis: 70600674
Rechenzeit: 0.001530 Sekunden


