AdventOfCode2021/shared/LinkedListGameBoard.go
Luke Else 801d7f9a78 day 21b incomplete
tried doing it, very close, I believe I have missed a very simple step or some edge case is not being run.

Value is currently way below what is expected So I either think one of the data structures is behaving badly, or I have missed a key point
2021-12-22 01:02:12 +00:00

56 lines
815 B
Go

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
}