private ShipPosition SplitPositionString(string position) { // TODO: Expand to handle any whitespace as per spec. var parts = position.Split(' '); var shipPosition = new ShipPosition(); // TODO: Add handling for invalid input shipPosition.XCoordinate = Int16.Parse(parts[0]); shipPosition.YCoordinate = Int16.Parse(parts[1]); shipPosition.Direction = parts[2][0]; return shipPosition; }
private ShipPosition ApplyTransition(ShipPosition currentPosition, char navigationalOperation) { if(navigationalOperation == 'F') { switch(currentPosition.Direction) { case 'N': currentPosition.YCoordinate++; break; case 'E': currentPosition.XCoordinate++; break; case 'S': currentPosition.YCoordinate--; break; case 'W': currentPosition.XCoordinate--; break; } } if(navigationalOperation == 'L') { switch(currentPosition.Direction) { case 'N': currentPosition.Direction = 'W'; break; case 'E': currentPosition.Direction = 'N'; break; case 'S': currentPosition.Direction = 'E'; break; case 'W': currentPosition.Direction = 'S'; break; } } if(navigationalOperation == 'R') { switch(currentPosition.Direction) { case 'N': currentPosition.Direction = 'E'; break; case 'E': currentPosition.Direction = 'S'; break; case 'S': currentPosition.Direction = 'W'; break; case 'W': currentPosition.Direction = 'N'; break; } } return currentPosition; }