79 lines
1.6 KiB
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()
|
|
}
|