feat: wip on adding grid
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
package grid
|
||||
|
||||
type Grid interface {
|
||||
Positions() map[Position]string
|
||||
Walk()
|
||||
}
|
||||
|
||||
type grid struct {
|
||||
positions map[Position]string
|
||||
}
|
||||
|
||||
func NewGrid(input []string) Grid {
|
||||
numberOfRows := len(input)
|
||||
numberOfColumns := len(input[0])
|
||||
positions := map[Position]string{}
|
||||
|
||||
for row := range numberOfRows {
|
||||
for column := range numberOfColumns {
|
||||
value := string(input[row][column])
|
||||
pos := NewPosition(row, column)
|
||||
positions[pos] = value
|
||||
}
|
||||
}
|
||||
|
||||
return grid{
|
||||
positions: positions,
|
||||
}
|
||||
}
|
||||
|
||||
func (g grid) Positions() map[Position]string {
|
||||
positions := map[Position]string{}
|
||||
|
||||
for key, value := range g.positions {
|
||||
newPosition := NewPosition(key.Row(), key.Column())
|
||||
positions[newPosition] = value
|
||||
}
|
||||
|
||||
return positions
|
||||
}
|
||||
|
||||
type Position interface {
|
||||
Column() int
|
||||
Row() int
|
||||
}
|
||||
|
||||
type position struct {
|
||||
column int
|
||||
row int
|
||||
}
|
||||
|
||||
func NewPosition(row int, column int) Position {
|
||||
return position{
|
||||
row: row,
|
||||
column: column,
|
||||
}
|
||||
}
|
||||
|
||||
func (p position) Row() int {
|
||||
return p.row
|
||||
}
|
||||
|
||||
func (p position) Column() int {
|
||||
return p.column
|
||||
}
|
||||
|
||||
type Move interface {
|
||||
NumberOfRows() int
|
||||
NumberOfColumns() int
|
||||
}
|
||||
|
||||
type move struct {
|
||||
numberOfRows int
|
||||
numberOfColumns int
|
||||
}
|
||||
|
||||
func (m move) NumberOfRows() int {
|
||||
return m.numberOfColumns
|
||||
}
|
||||
|
||||
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}
|
||||
UpRight = move{numberOfRows: -1, numberOfColumns: 1}
|
||||
UpLeft = move{numberOfRows: -1, numberOfColumns: -1}
|
||||
DownRight = move{numberOfRows: 1, numberOfColumns: 1}
|
||||
DownLeft = move{numberOfRows: 1, numberOfColumns: -1}
|
||||
)
|
||||
|
||||
var AllMoves = []Move{
|
||||
Up,
|
||||
Down,
|
||||
Right,
|
||||
Left,
|
||||
UpRight,
|
||||
UpLeft,
|
||||
DownRight,
|
||||
DownLeft,
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
..........
|
||||
@@ -0,0 +1 @@
|
||||
package grid_test
|
||||
Reference in New Issue
Block a user