Sha256: dd66548fb7786a2ad3820c1bb69beaaa2c9b1b186feeb01ae0bfd08345f60898

Contents?: true

Size: 1.83 KB

Versions: 102

Compression:

Stored size: 1.83 KB

Contents

'use strict';

var Robot = function () {
  this.coordinates = [0, 0];
  this.bearing = 'north';
};

Robot.prototype.at = function (xcoord, ycoord) {
  this.coordinates = [xcoord, ycoord];
};

Robot.prototype.orient = function (direction) {
  this.bearing = direction;
  return 'The robot is pointed ' + direction;
};

Robot.prototype.advance = function () {

  if (this.bearing === 'north') {
    this.coordinates[1] += 1;
  } else if (this.bearing === 'south') {
    this.coordinates[1] -= 1;
  } else if (this.bearing === 'east') {
    this.coordinates[0] += 1;
  } else if (this.bearing === 'west') {
    this.coordinates[0] -= 1;
  }
};

Robot.prototype.turnLeft = function () {

  if (this.bearing === 'north') {
    this.orient('west');
  } else if (this.bearing === 'south') {
    this.orient('east');
  } else if (this.bearing === 'east') {
    this.orient('north');
  } else if (this.bearing === 'west') {
    this.orient('south');
  }
};

Robot.prototype.turnRight = function () {

  if (this.bearing === 'north') {
    this.orient('east');
  } else if (this.bearing === 'south') {
    this.orient('west');
  } else if (this.bearing === 'east') {
    this.orient('south');
  } else if (this.bearing === 'west') {
    this.orient('north');
  }
};

Robot.prototype.instructions = function (s) {
  var result = [];
  s.split('').forEach(function (character) {
    if (character === 'L') {
      result.push('turnLeft');
    } else if (character === 'R') {
      result.push('turnRight');
    } else if (character === 'A') {
      result.push('advance');
    }
  });
  return result;
};

Robot.prototype.place = function (args) {
  this.coordinates = [args.x, args.y];
  this.bearing = args.direction;
};

Robot.prototype.evaluate = function (s) {
  this.instructions(s).forEach(function (instruction) {
    this[instruction]();
  }, this);
};

module.exports = Robot;

Version data entries

102 entries across 102 versions & 1 rubygems

Version Path
trackler-2.0.6.6 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.6.5 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.6.4 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.6.3 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.6.2 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.6.1 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.6.0 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.18 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.17 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.16 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.15 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.14 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.13 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.12 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.11 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.10 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.9 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.8 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.7 tracks/javascript/exercises/robot-simulator/example.js
trackler-2.0.5.6 tracks/javascript/exercises/robot-simulator/example.js