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