Day 14 & 15 progress
This commit is contained in:
80
2019/day15/main.go
Normal file
80
2019/day15/main.go
Normal file
@@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
intcode "git.bullercodeworks.com/brian/adventofcode/2019/intcode-processor"
|
||||
)
|
||||
|
||||
var auto bool
|
||||
|
||||
func main() {
|
||||
progFileName := "input"
|
||||
|
||||
if len(os.Args) > 1 && os.Args[1] == "-auto" {
|
||||
auto = true
|
||||
}
|
||||
prog := intcode.ReadIntCodeFile(progFileName)
|
||||
play(prog)
|
||||
}
|
||||
|
||||
func play(prog []int) {
|
||||
p := intcode.NewProgram(prog)
|
||||
go func() {
|
||||
for {
|
||||
for !p.NeedsInput() {
|
||||
time.Sleep(1)
|
||||
}
|
||||
if auto {
|
||||
} else {
|
||||
var gotInput bool
|
||||
for !gotInput {
|
||||
fmt.Print("Input (vimlike): ")
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
inp, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
inp = strings.TrimSpace(inp)
|
||||
switch inp {
|
||||
case "h":
|
||||
p.Input(3)
|
||||
gotInput = true
|
||||
case "j":
|
||||
p.Input(2)
|
||||
gotInput = true
|
||||
case "k":
|
||||
p.Input(1)
|
||||
gotInput = true
|
||||
case "l":
|
||||
p.Input(4)
|
||||
gotInput = true
|
||||
}
|
||||
}
|
||||
}
|
||||
for !p.NeedsOutput() {
|
||||
time.Sleep(1)
|
||||
}
|
||||
moveRes := p.Output()
|
||||
switch moveRes {
|
||||
case 0: // Hit a wall
|
||||
fmt.Println("WALL")
|
||||
case 1: // Moved
|
||||
fmt.Println("OK")
|
||||
case 2: // Moved and done
|
||||
fmt.Println("DONE")
|
||||
}
|
||||
}
|
||||
}()
|
||||
ret := p.Run()
|
||||
if ret == intcode.RET_DONE {
|
||||
|
||||
} else if ret == intcode.RET_ERR {
|
||||
fmt.Println("ERROR")
|
||||
fmt.Println(p.Error())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user