Sha256: ad204d94efc8e02657e872a73e3eb7a55b2eec8bed2147de4e212f46424d5656

Contents?: true

Size: 1.04 KB

Versions: 30

Compression:

Stored size: 1.04 KB

Contents

export default class Series {

  constructor(numberString) {
    if(numberString.match('[^0-9]')) {
      throw new Error('Invalid input.');
    }

    this.numberString = numberString;
    this.digits = this.getDigits();
  }

  getDigits() {
    return [...this.numberString].map( digit => {
      return parseInt(digit, 10);
    });
  }

  largestProduct(size) {
    if (size < 0) {
      throw new Error('Invalid input.');
    }

    let product,
      max = 0;
    this.slices(size).forEach( slice => {
      product = slice.reduce( (a, b) => {
        return a * b;
      }, 1);
      if (product > max) {
        max = product;
      }
    });
    return max;
  }

  slices(sliceSize) {
    const result = [];
    let slice = [];

    if (sliceSize > this.digits.length) {
      throw new Error('Slice size is too big.');
    }

    for (let i = 0; i < this.digits.length - sliceSize + 1; i++) {
      for (let j = 0; j < sliceSize; j++) {
        slice.push(this.digits[i + j]);
      }
      result.push(slice);
      slice = [];
    }

    return result;
  }
}

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
trackler-2.2.0.0 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.55 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.54 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.53 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.52 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.51 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.50 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.49 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.48 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.47 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.46 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.45 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.44 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.43 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.42 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.41 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.40 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.39 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.38 tracks/ecmascript/exercises/largest-series-product/example.js
trackler-2.1.0.37 tracks/ecmascript/exercises/largest-series-product/example.js