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.139 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.138 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.137 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.136 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.135 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.134 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.133 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.132 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.131 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.130 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.129 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.128 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.127 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.126 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.125 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.124 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.123 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.122 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.121 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.120 tracks/javascript/exercises/robot-name/example.js