refactor: extract grid abstraction for reuse
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
// Package move provides types and functions to represent and manipulate moves on a 2D grid.
|
||||
package move
|
||||
|
||||
type Move interface {
|
||||
NumberOfRows() int
|
||||
NumberOfColumns() int
|
||||
}
|
||||
|
||||
type move struct {
|
||||
numberOfRows int
|
||||
numberOfColumns int
|
||||
}
|
||||
|
||||
func (m move) NumberOfRows() int {
|
||||
return m.numberOfRows
|
||||
}
|
||||
|
||||
func (m move) NumberOfColumns() int {
|
||||
return m.numberOfColumns
|
||||
}
|
||||
|
||||
var (
|
||||
Up = move{numberOfRows: -1, numberOfColumns: 0}
|
||||
Down = move{numberOfRows: 1, numberOfColumns: 0}
|
||||
Right = move{numberOfRows: 0, numberOfColumns: 1}
|
||||
Left = move{numberOfRows: 0, numberOfColumns: -1}
|
||||
cardinal = []Move{Up, Down, Right, Left}
|
||||
|
||||
UpRight = move{numberOfRows: -1, numberOfColumns: 1}
|
||||
UpLeft = move{numberOfRows: -1, numberOfColumns: -1}
|
||||
DownRight = move{numberOfRows: 1, numberOfColumns: 1}
|
||||
DownLeft = move{numberOfRows: 1, numberOfColumns: -1}
|
||||
ordinal = []Move{UpRight, UpLeft, DownRight, DownLeft}
|
||||
|
||||
AllDirections = append(cardinal, ordinal...)
|
||||
)
|
||||
Reference in New Issue
Block a user