Documentation ¶
Index ¶
- func Run(input string) (string, error)
- type EvenInputLinesError
- type MissingInputLinesError
- type ParseRobotCoordinateError
- type ParseRobotDirectionError
- type ParseRobotMovementError
- type ParseSurfaceBoundaryError
- type RobotInstructionLengthError
- type RobotOutOfBoundsError
- type SurfaceDimensionError
- type SurfaceError
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Run ¶
Run takes an instruction-set and uses it to generate a surface and guide a set a robots along its surface.
Lines for the instruction-set must be delimited by '\n' and contain at least three lines in the following format:
5 5 <-- Line 0: This constructs a 2D surface.
1 1 N <-- Line 1: This constructs and places a robot on the surface.
LMLLMLM <-- Line 2: This moves the robot along the surface.
The input can repeat the instructions outlined on line 1 and 2 in order to place more robots on the surface, for example:
5 5
1 1 N
LMLMLM ¶
2 2 S
LLLLLL ¶
Run will return the results of robots final resting positions in the following format:
2 2 E
1 1 N
Note that output is delimited by '\n' and the number of lines is equal to the number of robots constructed.
If an error occurs, Run will return the resting places of ALL robots that have successfully moved across the surface AND the error, for example:
5 5
1 1 N
L ¶
1 1 N
MMMMMMM ¶
Will return a string "1 1 W" and an out-of-bounds error.
Types ¶
type EvenInputLinesError ¶
type EvenInputLinesError struct{ Lines int }
EvenInputLinesError is an error that is used whenever the input to the Run command has an even number of instructions. You can never have an even number of commands since a surface needs one line of instructions, while a robot requires two. This can be reduced to the rule 2n + 1, which is also the rule for an odd number.
func (*EvenInputLinesError) Error ¶
func (e *EvenInputLinesError) Error() string
Error outputs a message relating to the even number of instructions within the input.
type MissingInputLinesError ¶
type MissingInputLinesError struct{ Lines int }
MissingInputLinesError is an error that is used whenever the number of instructions given to the Run command is less than the expected amount.
func (*MissingInputLinesError) Error ¶
func (m *MissingInputLinesError) Error() string
Error outputs a message relating to the missing input.
type ParseRobotCoordinateError ¶
ParseRobotCoordinateError is an error that is thrown whenever a coordinate used for a robot from a instruction-set is incorrect.
func (*ParseRobotCoordinateError) Error ¶
func (s *ParseRobotCoordinateError) Error() string
Error outputs a message that relates to the coordinate that is unable to be parsed.
func (*ParseRobotCoordinateError) Unwrap ¶
func (s *ParseRobotCoordinateError) Unwrap() error
Unwrap returns the error that is contained within ParseRobotCoordinateError
type ParseRobotDirectionError ¶
ParseRobotDirectionError is an error that is thrown whenever a direction used for a robot is unable to be parsed.
func (*ParseRobotDirectionError) Error ¶
func (p *ParseRobotDirectionError) Error() string
Error outputs a message that relates to the direction that is unable to be parsed.
func (*ParseRobotDirectionError) Unwrap ¶
func (p *ParseRobotDirectionError) Unwrap() error
Unwrap returns the error contained within ParseRobotDirectionError.
type ParseRobotMovementError ¶
ParseRobotMovementError is an error that is returned whenever a movement instruction is unable to be parsed.
func (*ParseRobotMovementError) Error ¶
func (p *ParseRobotMovementError) Error() string
Error outputs a message relating to the movement that is unable to be parsed.
func (*ParseRobotMovementError) Unwrap ¶
func (p *ParseRobotMovementError) Unwrap() error
Unwrap returns the error that is contained within the ParseRobotMovementError.
type ParseSurfaceBoundaryError ¶
ParseSurfaceBoundaryError is an error that is used whenever a coordinate for a surface cannot be parsed into an int.
func (*ParseSurfaceBoundaryError) Error ¶
func (s *ParseSurfaceBoundaryError) Error() string
Error outputs a message about the coordinate that was unable to be parsed.
func (*ParseSurfaceBoundaryError) Unwrap ¶
func (s *ParseSurfaceBoundaryError) Unwrap() error
Unwrap returns the error that is contained within the ParseSurfaceBoundaryError.
type RobotInstructionLengthError ¶
RobotInstructionLengthError is an error that is thrown whenever the number of instructions used to construct a robot is not equal to runner.robotInstructionLength
func (*RobotInstructionLengthError) Error ¶
func (r *RobotInstructionLengthError) Error() string
Error returns a message around the unexpected instruction length.
type RobotOutOfBoundsError ¶
RobotOutOfBoundsError is an error that is returned whenever a robot moves out of bounds within a surface.
func (*RobotOutOfBoundsError) Error ¶
func (r *RobotOutOfBoundsError) Error() string
Error outputs a message that relates to the out-of-bound position.
type SurfaceDimensionError ¶
SurfaceDimensionError is an error that is thrown whenever a surface does not have two dimensions. I.E the instruction-set 2 2 3 is incorrect since that would relate to a three-dimensional coordinate.
func (*SurfaceDimensionError) Error ¶
func (s *SurfaceDimensionError) Error() string
Error outputs a message relating to an incorrect number of dimensions for a surface.
type SurfaceError ¶
type SurfaceError struct {
Err error
}
SurfaceError is an error that is returned whenever a surface is unable to be constructed. It wraps any error returned from plateau.New.
func (*SurfaceError) Error ¶
func (s *SurfaceError) Error() string
Error outputs a simple message stating the surface could not be created.
func (*SurfaceError) Unwrap ¶
func (s *SurfaceError) Unwrap() error
Unwrap returns the error that is contained within SurfaceError.