Sha256: ef7bd743175311134711293cb23e31f7bc7e5940a45f2c9ac43d449028b343ab

Contents?: true

Size: 1.27 KB

Versions: 255

Compression:

Stored size: 1.27 KB

Contents

function randomLetter () {
  var letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

  return letters.charAt(Math.floor(Math.random() * letters.length));
}

function Robot() {
  'use strict';

  this._name = this.generateName();
}

Robot.usedNames = {};

Robot.prototype = {
  constructor: Robot,

  generateName: function () {
    // This awesome err msg will never see the light of day. ;_; Checking the
    // length was slowing down the program too much.
    //
//     if (Object.keys(this.constructor.usedNames).length >= 676000) {
//       throw new Error("All possible names have been taken. " +
//                       "Our robots are taking over the world! : D");
//     }

    var name = randomLetter().toUpperCase();
    name += randomLetter().toUpperCase();
    name += (Math.random() + '').substr(2, 3);

    if (this.constructor.usedNames[name]) {
      return this.generateName();
    }

    this.constructor.usedNames[name] = true;

    return name;
  },

  get name () { return this._name; },

  set name (newName) {
    if (!(/^[A-Z]{2}\d{3}$/).test(newName)) {
      throw new Error('Name must be 2 capital letters followed by 3 ints.');
    }

    this._name = newName;
  },

  reset: function() { this.name = this.generateName(); }
};

module.exports = Robot;

Version data entries

255 entries across 255 versions & 1 rubygems

Version Path
trackler-2.2.1.37 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.36 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.35 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.34 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.33 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.32 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.31 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.30 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.29 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.28 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.27 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.26 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.25 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.24 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.23 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.22 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.21 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.20 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.19 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.18 tracks/javascript/exercises/robot-name/example.js