2018 Day 15 Completed!
This commit is contained in:
34
2018/day15/tile.go
Normal file
34
2018/day15/tile.go
Normal file
@@ -0,0 +1,34 @@
|
||||
package main
|
||||
|
||||
type Tile struct {
|
||||
Kind int
|
||||
X, Y int
|
||||
Map Map
|
||||
Unit *Unit
|
||||
}
|
||||
|
||||
func (t Tile) WalkableNeighbors() []*Tile {
|
||||
var neighbors []*Tile
|
||||
for _, offset := range offsets {
|
||||
if n := t.Map.Tile(t.X+offset.X, t.Y+offset.Y); n != nil && n.Kind == KindSpace {
|
||||
neighbors = append(neighbors, n)
|
||||
}
|
||||
}
|
||||
return neighbors
|
||||
}
|
||||
|
||||
type SortableTiles []*Tile
|
||||
|
||||
func (s SortableTiles) Len() int {
|
||||
return len(s)
|
||||
}
|
||||
func (s SortableTiles) Less(i, j int) bool {
|
||||
if s[i].Y == s[j].Y {
|
||||
return s[i].X < s[j].X
|
||||
}
|
||||
return s[i].Y < s[j].Y
|
||||
}
|
||||
|
||||
func (s SortableTiles) Swap(i, j int) {
|
||||
s[i], s[j] = s[j], s[i]
|
||||
}
|
||||
Reference in New Issue
Block a user