AdventOfCode2021/shared/LinkedListGameBoard.go

56 lines
815 B
Go
Raw Normal View History

package shared
type GameBoard struct {
Start *GamePosition
}
type GamePosition struct {
Position int
Next *GamePosition
}
type Player struct {
PlayerNum int
Score int
Position *GamePosition
}
type Universe struct {
Players map[int]*Player
}
type QueueItem struct {
Universe *Universe
Next *QueueItem
}
type UniverseQueue struct {
Head *QueueItem
Tail *QueueItem
}
func (q *UniverseQueue) Pop() (universe *Universe) {
universe = nil
if q.Head != nil {
universe = q.Head.Universe
q.Head = q.Head.Next
if q.Head == nil {
q.Tail = nil
}
}
return
}
func (q *UniverseQueue) Add(universe *Universe) {
newUniverse := new(QueueItem)
newUniverse.Universe = universe
if q.Tail != nil {
q.Tail.Next = newUniverse
} else {
q.Head = newUniverse
}
q.Tail = newUniverse
}