package main import ( "bufio" "fmt" "io/ioutil" "os" "strings" "time" intcode "git.bullercodeworks.com/brian/adventofcode/2019/intcode-processor" helpers "git.bullercodeworks.com/brian/adventofcode/helpers" ) func main() { progFileName := "input" if len(os.Args) > 1 { progFileName = os.Args[1] } dat, err := ioutil.ReadFile(progFileName) if err != nil { fmt.Println("Error reading program file:", err.Error()) os.Exit(1) } var prog []int stringDat := strings.TrimSpace(string(dat)) for _, v := range strings.Split(stringDat, ",") { prog = append(prog, helpers.Atoi(v)) } solve(prog) } func solve(inp []int) { p := intcode.NewProgram(inp) //p.EnableDebug() go p.Run() for p.State() != intcode.RET_DONE { if p.State() == intcode.RET_ERR { panic(p.Error()) } if p.NeedsInput() { fmt.Print("Input ('1' for part 1, '2' for part 2): ") reader := bufio.NewReader(os.Stdin) inp, err := reader.ReadString('\n') if err != nil { fmt.Println("Input Error:", err.Error()) } else { p.Input(helpers.Atoi(strings.TrimSpace(inp))) } } if p.NeedsOutput() { fmt.Println(p.Output()) } time.Sleep(1) } }