Sha256: 48672df92a1640a3d431d500390029a78eb9c73ad95762d4b133332f1c011bf0

Contents?: true

Size: 1.28 KB

Versions: 141

Compression:

Stored size: 1.28 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

141 entries across 141 versions & 1 rubygems

Version Path
trackler-2.2.1.78 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.77 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.76 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.75 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.74 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.73 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.72 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.71 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.70 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.69 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.68 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.67 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.66 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.65 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.64 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.63 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.62 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.61 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.60 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.59 tracks/javascript/exercises/robot-name/example.js