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
This commit is contained in:
2021-12-22 01:02:12 +00:00
parent f406939197
commit 801d7f9a78
3 changed files with 213 additions and 0 deletions

View File

@ -14,3 +14,42 @@ type Player struct {
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
}

29
shared/Queue.go Normal file
View File

@ -0,0 +1,29 @@
package shared
type Queue struct {
Head *Node
Tail *Node
}
func (q *Queue) Pop() (node *Node) {
node = nil
if q.Head != nil {
node = q.Head
q.Head = q.Head.Next
if q.Head == nil {
q.Tail = nil
}
}
return
}
func (q *Queue) Add(node *Node) {
if q.Tail != nil {
q.Tail.Next = node
} else {
q.Head = node
}
q.Tail = node
}