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.98 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.97 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.96 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.95 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.94 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.93 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.92 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.91 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.90 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.89 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.88 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.87 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.86 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.85 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.84 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.83 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.82 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.81 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.80 tracks/javascript/exercises/robot-name/example.js
trackler-2.2.1.79 tracks/javascript/exercises/robot-name/example.js