adventofcode/2019/day23/main.go

79 lines
1.6 KiB
Go

package main
import (
"time"
intcode "git.bullercodeworks.com/brian/adventofcode/2019/intcode-processor"
)
func main() {
//pt := helpers.GetArgNumber(1)
prog := intcode.ReadIntCodeFile("input")
//if pt == "1" {
part1(prog)
//} else {
// part2(prog)
//}
}
func part1(prog []int) {
p := intcode.NewProgram(prog)
n := StartNetwork(*p)
for !n.CrashOverride {
time.Sleep(1)
}
}
/*
func part1o(prog []int) {
var network []*intcode.Program
msgQueue := make([][]int, 255)
for k := 0; k < 50; k++ {
p := intcode.NewProgram(prog)
//p.EnableDebug()
network = append(network, p)
msgQueue = append(msgQueue, []int{})
go func(addr int) {
for !network[addr].NeedsInput() {
time.Sleep(1)
}
network[addr].Input(addr)
for {
if !network[addr].NeedsOutput() && !network[addr].NeedsInput() {
time.Sleep(1)
} else if network[addr].NeedsOutput() {
msgD := network[addr].Output()
msgQueue[msgD] = append(msgQueue[msgD], network[addr].Output())
msgQueue[msgD] = append(msgQueue[msgD], network[addr].Output())
fmt.Println(addr, "->", msgD, msgQueue[msgD])
} else if network[addr].NeedsInput() {
if len(msgQueue[addr]) > 0 {
var v int
v, msgQueue[addr] = msgQueue[addr][0], msgQueue[addr][1:]
fmt.Println(addr, "<-", v)
network[addr].Input(v)
} else {
network[addr].Input(-1)
}
}
}
}(k)
go network[k].Run()
}
for len(msgQueue[255]) < 2 {
time.Sleep(1)
}
fmt.Println(msgQueue[255])
}
*/
func part2(prog []int) {
}
func getOutput(p *intcode.Program) int {
for !p.NeedsOutput() {
time.Sleep(1)
}
return p.Output()
}