diff options
author | j-james | 2022-12-12 02:15:44 +0000 |
---|---|---|
committer | j-james | 2022-12-12 02:18:55 +0000 |
commit | a7ba598a54a8883c83cb9ef2b04d653eecd92e28 (patch) | |
tree | 06d362d3a88c615d8747ddf9a961bf491a8575a5 /2019/two.go | |
parent | 13007178188cd89b31e3e41090e8a8ed64867c13 (diff) |
Reorganize 2019 solutions
Diffstat (limited to '2019/two.go')
-rw-r--r-- | 2019/two.go | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/2019/two.go b/2019/two.go deleted file mode 100644 index 8108c87..0000000 --- a/2019/two.go +++ /dev/null @@ -1,66 +0,0 @@ -package main - -import ( - "fmt" - "io/ioutil" - "os" - "strconv" -) - -func main() { - var slice []int - start, size := 0, 0 - if len(os.Args) < 2 { - panic("runtime error: missing operand") - } - file, err := ioutil.ReadFile(os.Args[1]) - if err != nil { - panic(err) - } - for i := 0; i < len(file); i++ { - if file[i] == ',' || file[i] == '\n' { - arg, err := strconv.Atoi(string(file[start:i])) // i-1?? - if err != nil { - panic(err) - } - slice = append(slice, arg) - start = i + 1 - size++ - } - } - noun, verb := edocpo(slice, 19690720) - slice[1] = 12 - slice[2] = 2 - fmt.Println(opcode(slice)[0]) - fmt.Println(100*noun + verb) -} - -func opcode(slice []int) []int { - for i := 0; i < len(slice); i += 4 { - if slice[i] == 1 { - slice[slice[i+3]] = slice[slice[i+1]] + slice[slice[i+2]] - } else if slice[i] == 2 { - slice[slice[i+3]] = slice[slice[i+1]] * slice[slice[i+2]] - } else if slice[i] == 99 { - return slice - } else { - fmt.Println("Unsupported code", slice[i], "at", i) - os.Exit(0) - } - } - return slice -} - -func edocpo(slice []int, output int) (int, int) { - var ecils []int - for i := 0; i < len(slice); i++ { - for j := 0; j < len(slice); j++ { - ecils = append([]int(nil), slice...) // reset ecils to slice - ecils[1], ecils[2] = i, j - if opcode(ecils)[0] == output { - return i, j - } - } - } - return -1, -1 -} |