JavaScript Implementation of Problem 8

View source code here on GitHub!

p0008()

Project Euler Problem 8

In Python I did this with an iterator, but that is more cumbersome here, so I just did it with a loop that slices and takes advantage of JavaScript's type coersion

Problem:

The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832.

73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 70172427121883998797908792274921901699720888093776 65727333001053367881220235421809751254540594752243 52584907711670556013604839586446706324415722155397 53697817977846174064955149290862569321978468622482 83972241375657056057490261407972968652414535100474 82166370484403199890008895243450658541227588666881 16427171479924442928230863465674813919123162824586 17866458359124566529476545682848912883142607690042 24219022671055626321111109370544217506941658960408 07198403850962455444362981230987879927244284909188 84580156166097919133875499200524063689912560717606 05886116467109405077541002256983155200055935729725 71636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

Returns:

number --

 1/**
 2 * Project Euler Problem 8
 3 *
 4 * In Python I did this with an iterator, but that is more cumbersome here,
 5 * so I just did it with a loop that slices and takes advantage of JavaScript's type coersion
 6 *
 7 * Problem:
 8 *
 9 * The four adjacent digits in the 1000-digit number that have the greatest
10 * product are 9 × 9 × 8 × 9 = 5832.
11 *
12 * 73167176531330624919225119674426574742355349194934
13 * 96983520312774506326239578318016984801869478851843
14 * 85861560789112949495459501737958331952853208805511
15 * 12540698747158523863050715693290963295227443043557
16 * 66896648950445244523161731856403098711121722383113
17 * 62229893423380308135336276614282806444486645238749
18 * 30358907296290491560440772390713810515859307960866
19 * 70172427121883998797908792274921901699720888093776
20 * 65727333001053367881220235421809751254540594752243
21 * 52584907711670556013604839586446706324415722155397
22 * 53697817977846174064955149290862569321978468622482
23 * 83972241375657056057490261407972968652414535100474
24 * 82166370484403199890008895243450658541227588666881
25 * 16427171479924442928230863465674813919123162824586
26 * 17866458359124566529476545682848912883142607690042
27 * 24219022671055626321111109370544217506941658960408
28 * 07198403850962455444362981230987879927244284909188
29 * 84580156166097919133875499200524063689912560717606
30 * 05886116467109405077541002256983155200055935729725
31 * 71636269561882670428252483600823257530420752963450
32 *
33 * Find the thirteen adjacent digits in the 1000-digit number that have the
34 * greatest product. What is the value of this product?
35 *
36 * @return {number}
37 */
38
39exports.p0008 = function() {
40    const string = (
41        '73167176531330624919225119674426574742355349194934' +
42        '96983520312774506326239578318016984801869478851843' +
43        '85861560789112949495459501737958331952853208805511' +
44        '12540698747158523863050715693290963295227443043557' +
45        '66896648950445244523161731856403098711121722383113' +
46        '62229893423380308135336276614282806444486645238749' +
47        '30358907296290491560440772390713810515859307960866' +
48        '70172427121883998797908792274921901699720888093776' +
49        '65727333001053367881220235421809751254540594752243' +
50        '52584907711670556013604839586446706324415722155397' +
51        '53697817977846174064955149290862569321978468622482' +
52        '83972241375657056057490261407972968652414535100474' +
53        '82166370484403199890008895243450658541227588666881' +
54        '16427171479924442928230863465674813919123162824586' +
55        '17866458359124566529476545682848912883142607690042' +
56        '24219022671055626321111109370544217506941658960408' +
57        '07198403850962455444362981230987879927244284909188' +
58        '84580156166097919133875499200524063689912560717606' +
59        '05886116467109405077541002256983155200055935729725' +
60        '71636269561882670428252483600823257530420752963450'
61    );
62    let answer = 0;
63    for (let i = 0; i < string.length - 13; i++) {
64        let prod = 1;
65        for (let c = i; c < i + 13; c++) {
66            prod *= string[c];
67        }
68        if (prod > answer) {
69            answer = prod;
70        }
71    }
72    return answer;
73};