Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 36c6a4d

Browse files
MatheusMurielMatheus Muriel
and
Matheus Muriel
authored
solution: Project Euler Problem 11 (#1172)
* Included Project Euler 11 solution * Fix review comments Co-authored-by: Matheus Muriel <Matheus_MurielFerreira@swissre.com>
1 parent 0df7264 commit 36c6a4d

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

‎Project-Euler/Problem011.js‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
2+
/*
3+
*
4+
* In the ×ばつ20 grid below, four numbers along a diagonal line have been marked in red.
5+
*
6+
* 08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
7+
* 49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
8+
* 81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
9+
* 52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
10+
* 22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
11+
* 24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
12+
* 32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
13+
* 67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
14+
* 24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
15+
* 21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
16+
* 78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
17+
* 16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
18+
* 86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19+
* 19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
20+
* 04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
21+
* 88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
22+
* 04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
23+
* 20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
24+
* 20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
25+
* 01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48
26+
*
27+
* The product of these numbers is 26 ×ばつかける 63 ×ばつかける 78 ×ばつかける 14 = 1788696.
28+
*
29+
* What is the greatest product of four adjacent numbers in the
30+
* same direction (up, down, left, right, or diagonally) in the ×ばつ20 grid?
31+
*/
32+
33+
export function largestProductInAGrid (arr) {
34+
let max = 0
35+
const k = 4
36+
37+
const dx = [1, 0, 1, -1]
38+
const dy = [0, 1, 1, 1]
39+
40+
for (let y = 0; y < arr.length; y++) {
41+
for (let x = 0; x < arr[y].length; x++) {
42+
for (let d = 0; d < 4; d++) {
43+
let p = 1
44+
for (let i = 0; i < k; i++) {
45+
p *= get(arr, y + i * dy[d], x + i * dx[d])
46+
}
47+
max = Math.max(p, max)
48+
}
49+
}
50+
}
51+
return max
52+
}
53+
54+
function get (arr, y, x) {
55+
if (y >= 0 && y < arr.length && x >= 0 && x < arr[y].length) {
56+
return arr[y][x]
57+
}
58+
59+
return 0
60+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { largestProductInAGrid } from '../Problem011.js'
2+
3+
const arr = [
4+
[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],
5+
[49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0],
6+
[81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65],
7+
[52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],
8+
[22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80],
9+
[24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50],
10+
[32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70],
11+
[67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21],
12+
[24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72],
13+
[21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],
14+
[78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],
15+
[16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57],
16+
[86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],
17+
[19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 4, 89, 55, 40],
18+
[4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],
19+
[88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69],
20+
[4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36],
21+
[20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16],
22+
[20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54],
23+
[1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 1, 89, 19, 67, 48]
24+
]
25+
26+
describe('Checking Largest Product In A Grid', () => {
27+
// Project Euler Condition Check
28+
test('Test Euler Condition', () => {
29+
expect(largestProductInAGrid(arr)).toBe(70600674)
30+
})
31+
})

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /