Sha256: 6b328b8f699d104821f1d2c7fe1f63f32fd35226b1908e5f46be53a752f9c9c0

Contents?: true

Size: 938 Bytes

Versions: 165

Compression:

Stored size: 938 Bytes

Contents

const ArgumentError = () => ({
  name: 'argument error',
  message: 'oops',
});

const re = new RegExp(/(plus|minus|divided by|multiplied by)+/g);

class Wordy {

  constructor(question) {
    this.numbers = question.match(/[-]{0,1}\d+/g);
    this.operands = question.match(re);
  }

  answer() {
    if (!this.numbers || !this.operands) {
      throw new ArgumentError();
    }
    let ii = 1,
      jj = 0,
      result = +this.numbers[0];

    while (ii < this.numbers.length + 1) {
      const op = this.operands[jj++],
        b = +this.numbers[ii++] || null;
      switch (op) {
        case 'plus' :
          result += b;
          break;
        case 'minus' :
          result -= b;
          break;
        case 'multiplied by' :
          result *= b;
          break;
        case 'divided by' :
          result /= b;
          break;
      }
    }
    return result;
  }
}

export { Wordy as WordProblem, ArgumentError };

Version data entries

165 entries across 165 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.138 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.137 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.136 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.135 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.134 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.133 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.132 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.131 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.130 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.129 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.128 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.127 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.126 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.125 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.124 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.123 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.122 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.121 tracks/ecmascript/exercises/wordy/example.js
trackler-2.2.1.120 tracks/ecmascript/exercises/wordy/example.js