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:
@ -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
29
shared/Queue.go
Normal 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
|
||||
}
|
Reference in New Issue
Block a user