adventofcode/2019/day23/main.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() {
}