55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
h "git.bullercodeworks.com/brian/adventofcode/helpers"
|
|
)
|
|
|
|
func main() {
|
|
pt := h.GetArgNumber(1)
|
|
if pt != "2" {
|
|
part1()
|
|
} else {
|
|
part2()
|
|
}
|
|
}
|
|
|
|
func part1() {
|
|
devices, queue := NewNetwork()
|
|
for {
|
|
//fmt.Print(h.CLEAR_SCREEN)
|
|
for i, dev := range devices {
|
|
var packet h.Coordinate
|
|
if len(queue[i]) > 0 {
|
|
packet = queue[i][0]
|
|
} else {
|
|
packet = h.Coordinate{X: -1, Y: -1}
|
|
}
|
|
select {
|
|
case dest := <-dev.Channel:
|
|
x := <-dev.Channel
|
|
y := <-dev.Channel
|
|
//fmt.Printf("%s: [%d] -> [%d]: {%d, %d}\n", time.Now().Format(time.Stamp), i, dest, x, y)
|
|
if dest == 255 {
|
|
fmt.Println(y)
|
|
return
|
|
}
|
|
queue[dest] = append(queue[dest], h.Coordinate{X: x, Y: y})
|
|
case dev.Channel <- packet.X:
|
|
//if packet.X != -1 && packet.Y != -1 {
|
|
// fmt.Printf("%s: [%d] <-: {%d, %d}\n", time.Now().Format(time.Stamp), i, packet.X, packet.Y)
|
|
//}
|
|
if packet.X != -1 {
|
|
dev.Channel <- packet.Y
|
|
queue[i] = queue[i][1:]
|
|
}
|
|
}
|
|
//fmt.Println(dev)
|
|
}
|
|
}
|
|
}
|
|
|
|
func part2() {
|
|
}
|