diff options
author | j-james | 2020-12-01 05:17:13 +0000 |
---|---|---|
committer | j-james | 2020-12-01 05:17:13 +0000 |
commit | b23ea9372ae92b2add77213393041c62cba9a75b (patch) | |
tree | 0e4deb435849ff5a5fb0a4ce93bcd5beac5f386c /2019 | |
parent | 73f5728472dc5ffba612b0aead3126c63dd8b7d2 (diff) |
Move 2019 Advent of Code work into its own folder
Diffstat (limited to '2019')
-rw-r--r-- | 2019/eight.go | 87 | ||||
-rw-r--r-- | 2019/five.go | 131 | ||||
-rw-r--r-- | 2019/four.go | 68 | ||||
-rw-r--r-- | 2019/input/eight.txt | 1 | ||||
-rw-r--r-- | 2019/input/five.txt | 1 | ||||
-rw-r--r-- | 2019/input/four.txt | 1 | ||||
-rw-r--r-- | 2019/input/nine.txt | 1 | ||||
-rw-r--r-- | 2019/input/one.txt | 100 | ||||
-rw-r--r-- | 2019/input/seven.txt | 1 | ||||
-rw-r--r-- | 2019/input/six.txt | 1107 | ||||
-rw-r--r-- | 2019/input/ten.txt | 20 | ||||
-rw-r--r-- | 2019/input/three.txt | 2 | ||||
-rw-r--r-- | 2019/input/two.txt | 1 | ||||
-rw-r--r-- | 2019/nine.go | 166 | ||||
-rw-r--r-- | 2019/one.go | 40 | ||||
-rw-r--r-- | 2019/seven.go | 141 | ||||
-rw-r--r-- | 2019/six.go | 25 | ||||
-rw-r--r-- | 2019/ten.go | 47 | ||||
-rw-r--r-- | 2019/three.go | 156 | ||||
-rw-r--r-- | 2019/two.go | 66 |
20 files changed, 2162 insertions, 0 deletions
diff --git a/2019/eight.go b/2019/eight.go new file mode 100644 index 0000000..74be0e1 --- /dev/null +++ b/2019/eight.go @@ -0,0 +1,87 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" + "strconv" +) + +func main() { + if len(os.Args) < 2 { + panic("runtime error: missing operand") + } + file, err := ioutil.ReadFile(os.Args[1]) + if err != nil { + panic(err) + } + image := sliceify(file, 25, 6, len(file)/(25*6)) + + checksum(image) + decode(image) +} + +func sliceify(file []byte, width int, height int, depth int) [][][]int { + var image [][][]int + pointer := 0 + + for i := 0; i < depth; i++ { + var b [][]int + for j := 0; j < height; j++ { + var a []int + for k := 0; k < width; k++ { + element, err := strconv.Atoi(string(file[pointer])) + if err != nil { + panic(err) + } + a = append(a, element) + pointer++ + } + b = append(b, a) + } + image = append(image, b) + } + return image +} + +func count(layer [][]int, val int) int { + total := 0 + for i := 0; i < len(layer); i++ { + for j := 0; j < len(layer[i]); j++ { + if layer[i][j] == val { + total++ + } + } + } + return total +} + +func checksum(image [][][]int) { + min := count(image[0], 0) + layer := -1 + for i := 0; i < len(image); i++ { + total := count(image[i], 0) + if total < min { + min = total + layer = i + } + } + fmt.Println(count(image[layer], 1) * count(image[layer], 2)) +} + +func decode(image [][][]int) { + for i := 0; i < len(image[0]); i++ { + for j := 0; j < len(image[0][0]); j++ { + for k := 0; k < len(image); k++ { + if image[k][i][j] == 0 { + fmt.Print(" ") + break + } else if image[k][i][j] == 1 { + fmt.Print("X") + break + } + } + } + fmt.Println() + } +} diff --git a/2019/five.go b/2019/five.go new file mode 100644 index 0000000..9ea4699 --- /dev/null +++ b/2019/five.go @@ -0,0 +1,131 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" + "strconv" +) + +func main() { + var memory []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) + } + memory = append(memory, arg) + start = i + 1 + size++ + } + } + + // fmt.Println(execute(memory, size)) + // noun, verb := etucexe(memory, size, 19690720) + // fmt.Println(100*noun + verb) + execute(memory, size) +} + +func split(memory []int, i, size int) (int, int, int) { + mode := memory[i] / 100 + three, two, one := i+3, i+2, i+1 + if size-i > 1 { + if mode%10 == 0 { + one = memory[i+1] + } + if size-i > 2 { + if mode/10%10 == 0 { + two = memory[i+2] + } + if size-i > 3 { + if mode/100 == 0 { + three = memory[i+3] + } + } + } + } + return three, two, one +} + +func execute(memory []int, size int) []int { + for i := 0; i < len(memory); { + opcode := memory[i] % 100 + three, two, one := split(memory, i, size) + switch opcode { + case 1: // adds + memory[three] = memory[one] + memory[two] + i += 4 + case 2: // multiplies + memory[three] = memory[one] * memory[two] + i += 4 + case 3: // input + var input int + fmt.Print("Input: ") + resp, err := fmt.Scanf("%d", &input) + if err != nil { + fmt.Println(resp, err) + os.Exit(0) + } + memory[one] = input // not affected by modes + i += 2 + case 4: // output + fmt.Println(memory[one]) + i += 2 + case 5: // jump-if-true + if memory[one] != 0 { + i = memory[two] // ??? + } else { + i += 3 + } + case 6: // jump-if-false + if memory[one] == 0 { + i = memory[two] // ??? + } else { + i += 3 + } + case 7: // less than + if memory[one] < memory[two] { + memory[memory[i+3]] = 1 + } else { + memory[memory[i+3]] = 0 + } + i += 4 + case 8: // equals + if memory[one] == memory[two] { + memory[memory[i+3]] = 1 + } else { + memory[memory[i+3]] = 0 + } + i += 4 + case 99: // terminate + return memory + default: + fmt.Println("Unsupported code", opcode, "at", i) + os.Exit(0) + } + } + return memory +} + +func etucexe(memory []int, size, output int) (int, int) { + var volatile []int + for i := 0; i < len(memory); i++ { + for j := 0; j < len(memory); j++ { + volatile = append([]int(nil), memory...) // reset volatile to memory + volatile[1], volatile[2] = i, j + if execute(volatile, size)[0] == output { + return i, j + } + } + } + return -1, -1 +} diff --git a/2019/four.go b/2019/four.go new file mode 100644 index 0000000..7c901dc --- /dev/null +++ b/2019/four.go @@ -0,0 +1,68 @@ +package main + +import ( + "fmt" + "io/ioutil" + "math" + "os" + "strconv" +) + +func main() { + smallest, largest, total, details := -1, -1, 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 string(file[i]) == "-" { + smallest, err = strconv.Atoi(string(file[0:i])) + if err != nil { + panic(err) + } + largest, err = strconv.Atoi(string(file[i+1 : len(file)-1])) + if err != nil { + panic(err) + } + break + } + } + + for i := smallest; i <= largest; i++ { + if criteria(i, false) { + total++ + } + if criteria(i, true) { + details++ + } + } + fmt.Println(total) + fmt.Println(details) +} + +func criteria(password int, stage bool) bool { + prev := 0 + for i := 0; i < 6; i++ { + if password/int(math.Pow(10, float64(5-i)))%10 < prev { + return false + } + prev = password / int(math.Pow(10, float64(5-i))) % 10 + } + pascii := strconv.Itoa(password) + for i := 0; i < len(pascii)-1; i++ { + if string(pascii[i]) == string(pascii[i+1]) { + if !(len(pascii)-i > 2 && string(pascii[i]) == string(pascii[i+2])) { + if !stage { // Gross hack + return true + } + if !(i > 0 && string(pascii[i]) == string(pascii[i-1])) { + return true + } + } + } + } + return false +} diff --git a/2019/input/eight.txt b/2019/input/eight.txt new file mode 100644 index 0000000..046a733 --- /dev/null +++ b/2019/input/eight.txt @@ -0,0 +1 @@ +221222222022222222222222020222222222022220012102002220222222222222222222220122202222022122222222220212222122222222222222222202221222222222102222212222220222222222222222222222220222222222022220222102122220222222222222222222222122212222122122222222220202222222222222222222222212220222222222002222222222222222222122222222222222121222222222222220012202222221222222222222222222221122212222122222222222222202222222222222222222222222221222222222002222202222222222022222222222222222220222122222122221202102112222222222222222222222220022212022022222222222222212222022222222222222222202221022222222022222202222220222122022222222222222222222122222122220012002022221222222222222222222221222202022022122222222222222222022222222222222222222220022222222222222202222222222222022222222222222222222222222022222122122222221222222222222222222222222212122122122222222220222222122202222222222222222220222222222002222222222221222122022222222222222220222222222122221122022022221222222222222222222220222212122122122222222222202222222212222222222222202221220222222022222202222220222222222222222222222220222122222222222012012012220222222222222222222222022222222222022222222221212222122212222222222222202222021222222102222202222220222122222222222222222221222122222122220212112222220222220222222222222221022202222022022222222220202222122202222222222222212222221222222122222212222220222222222222222222221222222022222222221102102222221222222222222222222221022212122222022222222222202222222202222222222222222222220212222222222222222220222022222222222222220122222022222122220112022222220222222222222222222221022202222122122222122220222222022212222212222222222220220202222012222202222220122022122222222222221220222122222022221212102202221222221222222222222220122222022122122222222222222222222222222202220222212122121212222102222222222212222022022222222221222120222022222122220112002202220222220222222222222202222222122022122222122220212222122222222212221222202220222222222002222222222220122022222222222222220120222122222022222122212002222222221222222222222210222212222122222222121222202222122222222202220222202121222222222102222212222220022122022222222220222022222222222122222212222202222222220222222222222212022222122022022222121220212222222222220002222222212121221212222202222202222212222122022222222221222220222222222122222102112012221222222222222222222221122212122122222222221221222222122212221122220222212122221202222112222222222222022022222222222221220122222022222222220122202202220222222222222222222212222212122022122222021221202222222202221022222222202022220212222202222222222200022022222222222220221022222222222022221002222022220222221222222222222221222222222222122222222222202222122212221012220222211222021222222102222222222212122122122222222220220221222222222022221202222102220222221222222222222211122202122022122222220221212222222202222112221222201222121202222022222222222200122222222222222221221221222222222122221012112212222222222222222222222212222202222222122220220220212222122202221212221222221021222222222002222202222201222222122222222222220222222122222222222002022212222222220222222222222201122202022022022220220222202222222222220112221222212121120202222022222202222221022222222222222222221022222222222022220102102222221222222222222222222211222202122022022222021220222222122212220022221222220222220222222212222202222211122022222222222222221220222222222122220122202102220222222222222222222220122212222122122220122220202222122222220212221222220121022212222000222222222212022122222222222221221122222222222122222202202102220222220220222221222211022222022022222220020220212222022212220120221122200221220202222022222202222220122022022222222200220220222122222122222012212202222222221220222220022201122202222122222220121221222222022202221121220222200220222212222220222212222222122122222222222222222222222222222222221122122022220022220221222220022211222202222122122222122220222222022212220100220022220222222222222101222222222210122222222222222200222020222122222122220012002022220222220221222221122211022212222222122220021220202222222212221100221122221221120202222212222212222201022222022222222202220122222022222122221222122002222022221221222222222200222222122122122220020221222222122212221020220022211220121202222101222212222210122022022222222200222220222222222022220012012022221122221222222220222212022202122122122220120222202222222222222010220022211221122022222210222212222220222122222222222221222022222022222022222022112022222122221221222220222201122202222022222222222222202222222212222000221022212022120202222012222222222212122122022222222212221022222022222122221102202102220122220220222220022222222222122022122221121222212222122202220120212222211022021112222212222222222201222022022222222212221221222222222222222012122102222122220222222221022202022222222022022220021221202222222202222201212122211222221222222222222212222201022122122222222200221121222122222122222002202102220222220220222222122201222212022222122220122221222222022212222212201022222121122222222100222202222212022122222222222210220022222022222222221122002222220122220221222222222222122212122122022222121220222222222202220010211022212121021002222202222012222222122122022222222220222022222122222022221002112202220222221221222220022210022222122022022221222221212222122202222202210022220122120112222002222102222220122122022222222201222221222022222022221112112102220222222220222221222220122212122122122221122221212222122212221120202122210120220102222221222012222202122022022222222211222121222022222022221122222122221222222201222222022221022212122122222220222221202222222222220110222022201121222202222211222202222211222122122222222211221021222122222122220112122002222222221202222220022201122202222222122222022222202222222222222101212222220221221122222021222012222200222122122222222201221022222122222022220012002002221122220222222220022212222212222222222220220021212222122222220001201022222122022122222110222202222221222222022222222202222220222022222022222002102222222022222221222222222201122212022022022220220120202222122222222211200122200020222212222222222022222200222222022222222201221120222222222022222122112012222122220211222222022200122212022122122221222020202222022212221012202122201222122122222220222102222220122222022222222210221122222022222202220002102112222222221202222222222211022222022222022220220220202222122222222101222022212122121102222110222122222212122122122222222212220121222022222122221002222202220122221220222221022212022212022122222221022122212222122212222220202122220120022122222201222112222210122222022222222221221221222222222102222222012122222222222212222220022202222022222222122221020122202222222222222102220122210120122002222212222202222201122122122222222201221220222222202112222202102002222022222211221221022222122212022222222221120220212022022212222222221022212221221122222211222222222200022122022222222222221122222222212122221012122012222022220212220222222222122212122122022221121220222222222202222110202002220120021122222110222202122210022022022222222201221222222122212212220002122002120122221221222221122201022202222022222221020021212222222202220002210112220220221102222211222212022220122222222222222200220020222122202012221112102102022122222200201222122210022122022022022221220222202122122202222211222212202022120012222101222002122201122022222222222222220122222022202212221022112202220122220221201221022210222202122022222220022222202122222222221120202022222020022122222202222212022202122222212222222221221220222022212122220022002022021122222212212221022201222112122022022222122220212122022222220001211202220220021212222001222122122210022122002222222221222121222122222102222222202002222122220200211221022202222112022022022220122221212022222222222002200022211122022222222222222202122202122022012222220222222121222220222212221002112222222122220202220221122221222201022222222221220120202122022202222200201012211022022102222100222122122202222222102222220202221022222220212002221202102012022212220201202222022210022022022122222220020020202222122212221222011002211120122122222021222022122201222122002222222200222222222220222202221122022102021221221212212221122210122022122022122222020022222122022222221210012112222221221202222200222212022220122222212222221221220121222221112022221102202212220112220220220221022222022220222022222222020020212222222212220210002022200220122222222212222122220202122222122222221200220121222221202222221112222122021210222220212220122211122020222022122220220220222122022202220012111102212120120102222022222022221221222222022222221221220221222122002102221202202022022210220220220221022200022022122122222221021021222022122212222202101022211221122002222121222222121212222222222202220222220121222020202222221112022012022112221211222222122202222212122122122220022122212022122212222021220122222122120212222022222202022200122022202212220201221120222121122012220212002002221001222202200221022202222112222122222220122220202022022222221012002202201022120122222010222022021201022222012202221212221221222221112222222112102202120102220201210221022201022122122012222221021022222222122212221122002212201121021202222112222022120220122022012212220202222021222121112222222122002112121011220210222220122210222010022022122221021122212222020222222102210212200222022022222021222112221222222122102212220211221022222022212212220112002102021120220210211222222221122111122002022222221021222022221202222012222012221222021112222021222022221200122222212222222221221020222222022212220122222122120112222211221220022222122102222202222222021020212222121212220002002222220121020202222101222122120100222122102202220211222120222120212202221212102202220012221202222221022222222202121022022222220222212222020222221121011112220011022022222200222012220110222122002202221221221120222021202012221022002022021010221221202222022200022011221002122220222020222022122222220220020212201202022122222222222202221110022222212212222201221010222021222122222002202122221110220200212222222201022000220012222221222221212222121202222100211002222200021212222111222212022201122022112212221210222102222021112202220022012122020120210211201220122202122000020002022221022220212022222212221011222022220011021022222210222202120222022022002212202210222020222120022202222102022212122210222201220222222200122212220022022220122221222122022212221001000012222120220102222220222102022110122222122222201122222121222021012212221112102222220110200220222222222200020202121122022222222220202222022222222221010222210101020102222212222212021102022222202222221012220010222021002012220112222212122011211201201221222222120112222222122221020020202122221222222221010022201022222122222221222122020211222221212212200002212000222222012102221122022222121000200212201222022212021011120012222220120022212022120202220201100112222220221102222021222112211122222122022222212011200110222222102002222122202222220222211210200220121200120202220212022222121120222122122222220101100212221110122112222102222222020021222121012202211002212202222122002012220112122112021100202212221221120211220221221112122222221021212122020202220201100022220022220102222202222222012000222220012222222011221222222121212212221102010102220210222222202220022201221110201102022222222221202022121212222220212222201201222122222122222112021000022220022212220000210001222020202212221002202122022110222211221220121212121111002222022221220020222022021202221222011122022011222102222210222212120100122122122202220121222000222022222022222222210002220122222210210220221201022201111202222220220020202222220222220100211002001200122122222120222202202022221120012212210202201010222220022112220102100112221020222211212220221210120101110022022220121122222022220202221221001022101022221112222111222102102111022021102202220010202211222222202112220202022022020020221210200221020210221102222112222221220021222022022212222121212212211121121012222112222102101200102020202222211112202022222221202002021122211202021111200202201221021220022001020202022222020122212022122222220222000012211021122012222111222212011200021022112212212120210112202121122202221112100222122101211202202221021210022201001122022221220120212222221222222002020012011122220122222011222002220000102120222202210211220201202021222102010002221022120101211221222222120220122210210112122220121121212022022212222011010012201010222202222211222212000022102022022202212100212200212221222112112202022022220212202210221220121202020201022202022220120121222222022212220221000012202220020122222220222122121212120022012202220022212210202022022012101022120022222220200221211022220210120101001122022220120020212122020222221010210002200202222012222100222122202012111002022212201200110021222121112011111102220222120012210211200122121210120010202012022220221121202022122212221110002202021100121222222221222212101222102220012212221112222222212222122221010102202012220002220202202222222200121100222021022122021222222122122212220220022212012011122122222112222212202011100200222222222021112210202022202002120002201022122220211220201120122220121112212122022222021121212222120222222021210002120110020022222221222222000020021211112202222200000001222222222102000002222122121010211221110120122222022001221010222120022222202222021202221020011222200002022022222211222012120120020012222212201220012002202220022010112022111122121020201201000002021220122021001000122022021122222122121202221002201012011222222022222102222012012022220110022202220221121120212221012002200012020002020201202221022101110221021222021122122121000122212222221202221221011122021102221022222101212212021000100000212222221122112100212121122100121222001102220121202220220101110211122102010122222222222121202122122202222202101202120212021012222220202112102021000021002212200002221211212022002001112212110012121112221222101112211222100211211122222120112122212022121222022220011012101020020012222100212002001000120102102202201121000211212020102211222122202202121122221202112220102202002122211120022102101000202122120222121011011200101110221212222122112012012021201201022212220110120120222121112102120222202122022002212221000012122202222001110202122112112020222022022202122011001111211112021202222211002022212011210122202222201011011212212221122000210212121012020221220212002022102201212120202202122120112001212022220212220210202210121121022112222120122012222221202201222202201122201111212022101120022022210002120111212201120022010212021211222211022202010100212222220202122011100112100220020122222010102202122100110201202202211212201010222122122021220022111102122011120202211100121202120122001112222211212022212222022212222101111121022000020102222112122222202011200211002202200222002201202122222012022122022111121221012211202210210221122201202122122122201011222022220202220211112201211110221202222210102002002210221220212202222010212011202220112102210112101220121011211222010201111201200012020111122202100102202022200212012220012021002211220102222121022212202102100010212202201001012222222120221010020102021202121110010212121110200210121121210020122102002120202222210212121012222010012101222122222010012112011120220200201100101000011111000001020000010110011122111011121101102000010112021002010011100202212110010000002121101010110222221001011100100210100021201 diff --git a/2019/input/five.txt b/2019/input/five.txt new file mode 100644 index 0000000..a97e6c1 --- /dev/null +++ b/2019/input/five.txt @@ -0,0 +1 @@ +3,225,1,225,6,6,1100,1,238,225,104,0,1101,65,39,225,2,14,169,224,101,-2340,224,224,4,224,1002,223,8,223,101,7,224,224,1,224,223,223,1001,144,70,224,101,-96,224,224,4,224,1002,223,8,223,1001,224,2,224,1,223,224,223,1101,92,65,225,1102,42,8,225,1002,61,84,224,101,-7728,224,224,4,224,102,8,223,223,1001,224,5,224,1,223,224,223,1102,67,73,224,1001,224,-4891,224,4,224,102,8,223,223,101,4,224,224,1,224,223,223,1102,54,12,225,102,67,114,224,101,-804,224,224,4,224,102,8,223,223,1001,224,3,224,1,224,223,223,1101,19,79,225,1101,62,26,225,101,57,139,224,1001,224,-76,224,4,224,1002,223,8,223,1001,224,2,224,1,224,223,223,1102,60,47,225,1101,20,62,225,1101,47,44,224,1001,224,-91,224,4,224,1002,223,8,223,101,2,224,224,1,224,223,223,1,66,174,224,101,-70,224,224,4,224,102,8,223,223,1001,224,6,224,1,223,224,223,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,108,226,226,224,102,2,223,223,1005,224,329,101,1,223,223,1107,226,677,224,1002,223,2,223,1005,224,344,101,1,223,223,8,226,677,224,102,2,223,223,1006,224,359,101,1,223,223,108,677,677,224,1002,223,2,223,1005,224,374,1001,223,1,223,1108,226,677,224,1002,223,2,223,1005,224,389,101,1,223,223,1007,677,677,224,1002,223,2,223,1006,224,404,1001,223,1,223,1108,677,677,224,102,2,223,223,1006,224,419,1001,223,1,223,1008,226,677,224,102,2,223,223,1005,224,434,101,1,223,223,107,677,677,224,102,2,223,223,1006,224,449,1001,223,1,223,1007,226,677,224,102,2,223,223,1005,224,464,101,1,223,223,7,677,226,224,102,2,223,223,1005,224,479,101,1,223,223,1007,226,226,224,102,2,223,223,1005,224,494,101,1,223,223,7,677,677,224,102,2,223,223,1006,224,509,101,1,223,223,1008,677,677,224,1002,223,2,223,1006,224,524,1001,223,1,223,108,226,677,224,1002,223,2,223,1006,224,539,101,1,223,223,8,226,226,224,102,2,223,223,1006,224,554,101,1,223,223,8,677,226,224,102,2,223,223,1005,224,569,1001,223,1,223,1108,677,226,224,1002,223,2,223,1006,224,584,101,1,223,223,1107,677,226,224,1002,223,2,223,1005,224,599,101,1,223,223,107,226,226,224,102,2,223,223,1006,224,614,1001,223,1,223,7,226,677,224,102,2,223,223,1005,224,629,1001,223,1,223,107,677,226,224,1002,223,2,223,1005,224,644,1001,223,1,223,1107,677,677,224,102,2,223,223,1006,224,659,101,1,223,223,1008,226,226,224,1002,223,2,223,1006,224,674,1001,223,1,223,4,223,99,226 diff --git a/2019/input/four.txt b/2019/input/four.txt new file mode 100644 index 0000000..693a14b --- /dev/null +++ b/2019/input/four.txt @@ -0,0 +1 @@ +123257-647015 diff --git a/2019/input/nine.txt b/2019/input/nine.txt new file mode 100644 index 0000000..bb2d334 --- /dev/null +++ b/2019/input/nine.txt @@ -0,0 +1 @@ +1102,34463338,34463338,63,1007,63,34463338,63,1005,63,53,1101,0,3,1000,109,988,209,12,9,1000,209,6,209,3,203,0,1008,1000,1,63,1005,63,65,1008,1000,2,63,1005,63,902,1008,1000,0,63,1005,63,58,4,25,104,0,99,4,0,104,0,99,4,17,104,0,99,0,0,1102,32,1,1019,1101,0,500,1023,1101,0,636,1025,1102,36,1,1010,1101,0,29,1013,1102,864,1,1029,1102,21,1,1000,1102,1,507,1022,1102,1,28,1011,1102,38,1,1008,1101,0,35,1004,1101,25,0,1018,1102,24,1,1005,1102,30,1,1009,1102,1,869,1028,1101,0,37,1007,1102,1,23,1017,1102,1,20,1015,1102,1,22,1003,1101,0,39,1001,1102,1,31,1012,1101,701,0,1026,1101,0,641,1024,1101,0,34,1016,1102,1,0,1020,1102,698,1,1027,1102,33,1,1002,1102,26,1,1006,1101,0,1,1021,1101,0,27,1014,109,12,21101,40,0,0,1008,1012,40,63,1005,63,203,4,187,1105,1,207,1001,64,1,64,1002,64,2,64,109,-11,1207,7,37,63,1005,63,223,1105,1,229,4,213,1001,64,1,64,1002,64,2,64,109,14,1206,5,247,4,235,1001,64,1,64,1105,1,247,1002,64,2,64,109,-2,1207,-4,31,63,1005,63,269,4,253,1001,64,1,64,1105,1,269,1002,64,2,64,109,-6,1208,-5,35,63,1005,63,289,1001,64,1,64,1106,0,291,4,275,1002,64,2,64,109,9,21108,41,39,-1,1005,1015,311,1001,64,1,64,1105,1,313,4,297,1002,64,2,64,109,-5,2101,0,-9,63,1008,63,33,63,1005,63,339,4,319,1001,64,1,64,1106,0,339,1002,64,2,64,1205,10,351,4,343,1106,0,355,1001,64,1,64,1002,64,2,64,109,-18,2108,35,9,63,1005,63,375,1001,64,1,64,1105,1,377,4,361,1002,64,2,64,109,18,1205,9,389,1105,1,395,4,383,1001,64,1,64,1002,64,2,64,109,7,21107,42,41,-8,1005,1010,415,1001,64,1,64,1106,0,417,4,401,1002,64,2,64,109,-12,2102,1,0,63,1008,63,29,63,1005,63,437,1106,0,443,4,423,1001,64,1,64,1002,64,2,64,109,3,1208,0,30,63,1005,63,461,4,449,1105,1,465,1001,64,1,64,1002,64,2,64,109,5,1202,-5,1,63,1008,63,31,63,1005,63,489,1001,64,1,64,1106,0,491,4,471,1002,64,2,64,109,15,2105,1,-6,1001,64,1,64,1106,0,509,4,497,1002,64,2,64,109,-10,1206,2,525,1001,64,1,64,1106,0,527,4,515,1002,64,2,64,109,-18,1202,0,1,63,1008,63,39,63,1005,63,553,4,533,1001,64,1,64,1106,0,553,1002,64,2,64,109,1,2107,21,1,63,1005,63,571,4,559,1105,1,575,1001,64,1,64,1002,64,2,64,109,7,2102,1,-8,63,1008,63,39,63,1005,63,601,4,581,1001,64,1,64,1105,1,601,1002,64,2,64,109,2,1201,-7,0,63,1008,63,35,63,1005,63,623,4,607,1106,0,627,1001,64,1,64,1002,64,2,64,109,20,2105,1,-7,4,633,1106,0,645,1001,64,1,64,1002,64,2,64,109,-16,21107,43,44,-4,1005,1011,663,4,651,1105,1,667,1001,64,1,64,1002,64,2,64,109,-11,2107,36,0,63,1005,63,687,1001,64,1,64,1106,0,689,4,673,1002,64,2,64,109,19,2106,0,4,1106,0,707,4,695,1001,64,1,64,1002,64,2,64,109,-14,21108,44,44,6,1005,1015,725,4,713,1105,1,729,1001,64,1,64,1002,64,2,64,109,1,1201,-6,0,63,1008,63,36,63,1005,63,749,1106,0,755,4,735,1001,64,1,64,1002,64,2,64,109,-1,21101,45,0,10,1008,1019,42,63,1005,63,775,1105,1,781,4,761,1001,64,1,64,1002,64,2,64,109,16,21102,46,1,-7,1008,1018,44,63,1005,63,801,1105,1,807,4,787,1001,64,1,64,1002,64,2,64,109,-3,21102,47,1,-4,1008,1018,47,63,1005,63,833,4,813,1001,64,1,64,1105,1,833,1002,64,2,64,109,-14,2108,38,0,63,1005,63,851,4,839,1105,1,855,1001,64,1,64,1002,64,2,64,109,17,2106,0,3,4,861,1106,0,873,1001,64,1,64,1002,64,2,64,109,-31,2101,0,10,63,1008,63,36,63,1005,63,897,1001,64,1,64,1106,0,899,4,879,4,64,99,21101,0,27,1,21101,0,913,0,1106,0,920,21201,1,53612,1,204,1,99,109,3,1207,-2,3,63,1005,63,962,21201,-2,-1,1,21102,940,1,0,1106,0,920,21202,1,1,-1,21201,-2,-3,1,21101,955,0,0,1106,0,920,22201,1,-1,-2,1105,1,966,21201,-2,0,-2,109,-3,2106,0,0 diff --git a/2019/input/one.txt b/2019/input/one.txt new file mode 100644 index 0000000..199bf78 --- /dev/null +++ b/2019/input/one.txt @@ -0,0 +1,100 @@ +81893 +122450 +81968 +135462 +127082 +94016 +100999 +88954 +111500 +89232 +149706 +70377 +114053 +116799 +57368 +117222 +134050 +58097 +113145 +67710 +115082 +109484 +76183 +87768 +85164 +141183 +120410 +85101 +139190 +120483 +89111 +122940 +103010 +127018 +85178 +73893 +145037 +115786 +149613 +122956 +96325 +123513 +126850 +124733 +116615 +131598 +94544 +94431 +97681 +86617 +56739 +104904 +129964 +80862 +92125 +127108 +110565 +131296 +88192 +81824 +134198 +87363 +122455 +123441 +60907 +95023 +113940 +98328 +79989 +146133 +122356 +70932 +106379 +125641 +124905 +89699 +129133 +112173 +127629 +135485 +140068 +95229 +141276 +109807 +69951 +100792 +62683 +145565 +149063 +99523 +88881 +64337 +145012 +142380 +60028 +131565 +53041 +88489 +81712 +132728 diff --git a/2019/input/seven.txt b/2019/input/seven.txt new file mode 100644 index 0000000..26f287d --- /dev/null +++ b/2019/input/seven.txt @@ -0,0 +1 @@ +3,8,1001,8,10,8,105,1,0,0,21,38,63,76,89,106,187,268,349,430,99999,3,9,1001,9,5,9,102,3,9,9,1001,9,2,9,4,9,99,3,9,101,4,9,9,102,3,9,9,101,4,9,9,1002,9,3,9,101,2,9,9,4,9,99,3,9,101,5,9,9,1002,9,4,9,4,9,99,3,9,101,2,9,9,1002,9,5,9,4,9,99,3,9,1001,9,5,9,1002,9,5,9,1001,9,5,9,4,9,99,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,1001,9,1,9,4,9,3,9,101,1,9,9,4,9,3,9,102,2,9,9,4,9,3,9,1002,9,2,9,4,9,99,3,9,101,2,9,9,4,9,3,9,101,2,9,9,4,9,3,9,101,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,1001,9,1,9,4,9,3,9,1002,9,2,9,4,9,3,9,1001,9,1,9,4,9,3,9,101,2,9,9,4,9,99,3,9,1002,9,2,9,4,9,3,9,1001,9,2,9,4,9,3,9,101,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,2,9,9,4,9,3,9,102,2,9,9,4,9,3,9,102,2,9,9,4,9,99,3,9,102,2,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,1001,9,2,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,101,1,9,9,4,9,3,9,101,1,9,9,4,9,3,9,101,2,9,9,4,9,99,3,9,1002,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,102,2,9,9,4,9,3,9,1001,9,1,9,4,9,3,9,101,1,9,9,4,9,3,9,1002,9,2,9,4,9,3,9,101,1,9,9,4,9,3,9,1001,9,2,9,4,9,3,9,102,2,9,9,4,9,99 diff --git a/2019/input/six.txt b/2019/input/six.txt new file mode 100644 index 0000000..cef0eb9 --- /dev/null +++ b/2019/input/six.txt @@ -0,0 +1,1107 @@ +R45)497 +TYR)159 +RJC)Z1B +ZQB)99Z +W6M)G8S +KPZ)4J3 +GZ1)88C +7DK)FWL +1HX)LQV +8Y6)JRY +JBH)RLS +TNC)SDS +9SC)KXD +XXN)XQC +W3P)HHY +L4P)3VZ +L65)SXG +LD4)J5Z +8MK)88X +1QP)TLB +GFZ)SW1 +LQV)8Q8 +K8Q)XHQ +6H8)JFZ +3T3)T2L +RGL)R81 +3HK)XWS +GXN)KWT +V4C)86B +GR8)8QG +KQ2)V4C +JHQ)KLX +XS5)RLY +QZZ)RBP +Q13)QST +1KG)TKJ +7DT)82Y +3X8)WHG +QFS)7TP +5VW)8MK +GMN)CD9 +T2L)YF5 +8NN)DHP +VB7)SZL +MJP)MZV +18C)WS4 +SW1)3HK +TPK)P6Z +VG4)64H +SVC)GXG +9DN)RXQ +M41)L1W +GHN)K53 +BWG)R9H +VHC)ZYJ +XHF)JKB +JN4)HTQ +NY9)5GB +R5Z)X5Y +M23)2LV +G9M)N1R +DL5)2XD +66B)BRZ +DHY)FC1 +XNG)NYW +2RV)MCV +TH4)CZB +27D)PQH +6DV)TWP +7TP)WM2 +DVZ)VVT +C97)1PW +JFQ)NG7 +VX4)H83 +1LP)BW4 +BRZ)HQ9 +SKX)NY9 +PSL)3P8 +41N)SVX +G63)85M +ZR5)W6M +BJY)NWT +5W3)K2T +BS4)RQR +3RD)KHX +V6F)199 +MP3)QHY +RJ8)8NN +8XH)SCQ +GLZ)YKY +9JD)MB1 +SK9)ZWR +R8S)JYR +F31)WMG +RXQ)5N8 +BHM)FK8 +NNQ)PBH +G86)K8Q +2DB)BPW +5QX)3RD +P6P)GXR +JWK)L65 +TQZ)9NX +XHQ)KGX +X1S)QCT +WXH)NPT +1WM)6JV +FK4)535 +L82)ZSR +MC1)XW4 +WWN)YKC +CTV)CX1 +JV5)P37 +Q93)6YW +5TP)7MS +YW7)GTH +JDZ)PY3 +BSD)M39 +7BP)RYC +CQD)9FC +NPT)MJH +M5C)V61 +TXL)YR8 +YF3)VW9 +6ZT)XTM +NVF)BPK +VZ2)WXH +82Y)KPZ +ZKC)DTZ +QH2)DJ2 +TKK)729 +881)GKD +P95)42J +6WD)VXK +8RY)2P6 +WXX)8J9 +LP9)7B7 +CNJ)VBY +Z7K)VRC +M5W)JQ7 +WK4)4V2 +ZVF)QLP +99Z)Z7R +9W5)6TM +PS2)Z81 +QDD)3C7 +MF9)5CC +6JV)DJS +FP7)1H7 +VDH)M85 +3GF)BNF +GT8)HPT +K43)DSP +8K6)QRM +5GC)Z5Z +6YW)H6M +YQC)5W3 +1VG)63H +LXH)58R +BR6)2RB +2S4)CKV +SDN)ZRB +HHY)WKD +7QW)V52 +PC5)LYP +9LV)P95 +LVD)Q8M +CT8)4PS +B8L)PND +C32)8FS +ZTM)V8W +1TZ)YWS +N1R)G2G +729)153 +ZDJ)1PK +LXM)TC7 +9SF)94L +7VN)2VC +DQS)6YD +FCZ)DGP +FN3)5WD +RBP)Z86 +7VD)C97 +KBN)JWK +L68)8ZM +GVS)JDQ +9G7)DCD +QSZ)RGW +5SY)LDK +NKL)MHN +ZHB)66B +TS4)R8S +J9R)RR7 +N67)1TZ +HX8)XXY +4JY)9SC +LMP)YBH +XS9)XXN +RZD)WWF +JP9)KSD +YF5)139 +6YD)P27 +Z75)NMM +HCC)NVC +VVS)PHW +8Q8)VF2 +WGX)V95 +WMC)V6F +2TB)SDN +P49)4VS +K35)CF1 +4LD)YDW +G96)M5C +CJF)DW5 +ZRB)QMK +QSH)P3Z +KRV)BCJ +DH7)3RP +NWT)LZ5 +PND)QYX +5QB)YBG +ZHM)ZFT +CJJ)BLY +YBH)9JL +D14)W7S +JG9)B41 +913)CG4 +LKR)Q8W +FNB)1DB +BB4)RPY +P6Z)FMX +HPT)YV6 +DPD)G1M +YV6)JMQ +WW9)PVD +349)1LJ +BH1)LQQ +XSM)FX9 +ZZ7)FTF +B41)C8Z +7XL)K2Q +9L9)NW3 +YW1)VPF +CYK)43W +6NX)LP5 +H1X)Q8J +YNQ)3CJ +QYX)718 +VPF)DF7 +H83)PHV +4FP)2L2 +GRD)YRN +918)FTD +FF4)LHM +HQ9)HFZ +DGP)VVS +ZP2)9Q1 +WJC)295 +2KL)S12 +PGP)VX4 +G1M)W4F +9WC)GMN +YSW)G2Y +3Y6)W2J +BZX)Y7S +K4W)M5W +YJX)7DK +2LV)N42 +GXG)DXD +5N8)58B +8L3)XSM +M39)512 +QFD)5ZH +J2S)JNX +KBN)XCQ +WGN)TD3 +D2H)SHC +QZF)897 +GTJ)FTC +3ZN)99C +3T9)GJV +497)FRF +S8V)MF9 +HVY)2XK +T31)42Y +295)3FB +NGP)3GF +3HJ)MG2 +9TC)M6M +W7S)M1L +G1F)414 +M3K)7J5 +M9M)P3J +93H)K1Q +YRN)D53 +BPW)TSP +1HX)BZW +G3G)9ZM +LVJ)D14 +BQJ)DPD +C81)NPP +WC4)3T9 +CX1)D9K +DTZ)1SQ +CN3)HKD +YX5)4NQ +DZY)RPR +897)NKG +FQG)BJM +KWT)PYH +MZV)17Y +DSL)ZGT +T2Q)727 +TDR)V33 +WBP)FPB +2Y3)1KG +12V)X1X +9ZR)NFW +PMN)QFD +11H)2S4 +PHV)2WM +JTJ)CK7 +92T)6QK +LNG)XJM +K8B)LVD +9H5)94G +1K4)X5G +9XC)BS4 +2RB)KQ2 +MP3)SM2 +JZQ)SW2 +542)PZB +HCR)FRW +NDY)QFS +DXZ)D86 +5WD)XGT +PRB)VB4 +5DL)9H5 +XGG)LNG +43W)5CJ +681)RM3 +5CJ)RJ8 +DGP)QPF +7GH)96T +BPP)PYY +GJ8)LVX +2P6)4KS +WSP)8XH +YMN)8QQ +9NC)Y1S +ZCT)3FM +8J9)K1V +Q16)JBH +FPB)K8B +7PF)ZR5 +RFV)84Q +YKQ)TPK +M31)RXR +Q4L)NHQ +KSV)FPS +JBR)TYR +4B9)FHK +S9X)M9M +4HT)783 +J5D)9WC +ZCB)6HJ +SBH)QQ6 +VF2)PVS +JRY)5DL +ZY6)PNV +ZRH)P4P +2BQ)XTT +CKV)SCR +MQ7)VGW +6SM)BZX +MVN)1NL +FWL)LMP +DV9)3N2 +NG7)VG4 +7QK)8XR +8QG)G63 +DW5)ZKC +G8S)7GH +DSP)T43 +X8T)FP7 +DDQ)3RN +Q6K)CN3 +64H)X6N +DTZ)XH2 +Z81)HTX +YMN)SCZ +FCL)PCC +V6L)LQX +KSD)RTH +WXV)YKT +RTH)52B +N5B)MP1 +RRJ)8G9 +7B7)VXT +9WW)DZY +Y55)ZY8 +Z1B)TM8 +82Y)N8G +C97)29K +JXK)4N1 +WRP)BP9 +6H9)VDH +SZP)84F +414)NNQ +Z6X)P3N +P3J)9XZ +2QB)8SJ +VSC)8CS +XBT)92T +X27)6H9 +GLZ)B5L +L13)DHJ +J5Q)432 +69N)L2Q +VGZ)PMN +MCV)P9P +34F)12V +RX9)MJP +QJN)BB4 +4KS)T28 +9ZB)8GT +99C)LST +P4P)YMG +C9X)9XC +M9B)KG8 +V1B)DL5 +1H7)7X8 +RK2)KPF +KWN)M31 +718)JK9 +ZR4)7BP +W3J)YNQ +38B)X8T +YBG)HF2 +NPP)GZ1 +81K)X1S +RGW)G1F +Y1S)5QB +36R)BWG +38W)131 +YTR)LJC +71P)NR1 +H94)Z1N +3N2)27J +4LD)ZHM +81K)4RT +NPQ)RYY +727)H4Q +YTR)H94 +RM3)N7S +HQ9)BZG +3P8)GZQ +JHP)D2V +FXW)Q13 +7F9)56W +7S8)NJT +1M5)4LD +5ZH)3YB +KWR)RX4 +X6N)4RR +G8S)ZR4 +RXR)6Q2 +5CC)GMC +S9X)QSZ +TC7)57R +JGZ)2KL +YR8)FQG +QCT)BYH +DCD)MX7 +ZD9)1TP +LQX)JNR +PYY)YW1 +YQ3)H7C +R6X)XG1 +TXG)TMQ +TWR)YF3 +MMN)M23 +5YF)9SF +V61)PWP +PZ6)QZF +KG8)PRB +L94)N7V +XCQ)5JX +L1C)PS2 +R81)P57 +SCZ)GMM +TD3)3T3 +HZ4)TDR +RR7)V6L +4VS)R92 +Z5Z)73W +HPR)ZVF +G6S)5TC +XPZ)RQZ +42J)TWR +X6N)XWW +127)JN4 +BHX)9H6 +LP5)QSH +7BT)JRR +XTM)R9W +JQ7)7X5 +YKY)4P5 +YMG)SQQ +VW9)1HX +XWW)GR8 +QGM)K55 +GHQ)XPZ +799)21X +NW3)6WD +YNQ)MVX +Q8W)YL3 +HKD)DXF +NL6)TNC +WKD)RP2 +FX9)6ZT +733)41N +SHC)FXR +C9R)5GJ +9TS)DCP +4N1)W3P +LJC)WJC +PYH)J5Q +8SJ)4JY +25P)GXN +94G)C81 +HTQ)862 +CT4)KRV +W4F)2BQ +HF2)V48 +458)K4W +FYP)GLZ +1BF)MZB +MJK)68F +1SQ)JV5 +BMN)JP9 +NPP)XHF +C8Z)1LP +LXF)HVY +BKC)RNR +F3H)Z6F +PZB)38W +NHQ)XKZ +32T)ZP2 +MB1)D2H +B63)MYQ +Y31)KBN +FC1)D43 +SCR)9TS +6QK)DSL +X5Y)P65 +GRG)M1M +PBH)1K4 +HNR)ZCT +SPP)CSB +GXF)NM8 +J5Z)TTK +94L)WW6 +COM)7VN +3RN)TCS +YQC)T16 +ZG1)VD1 +GZQ)BKC +PYP)GJR +KRX)WDT +XJM)DHY +PVS)BJY +927)LD4 +DJH)NYX +1DB)QLX +3CC)4J4 +3FB)PTC +NVC)18C +2ZR)WGX +29K)ZZ7 +GJV)SBH +FTD)9ZR +MT2)PR3 +LSS)RYT +7FG)SL4 +9QT)27D +FTF)G96 +DHP)DV7 +PY3)881 +KX1)L82 +KPF)V72 +D9K)LKS +L99)NV9 +DF7)J3D +BZG)R45 +KTR)L99 +B1X)G4G +V77)32T +ZP1)V5G +V3G)7ZH +7J6)6RB +DXF)R8G +8FS)GRV +WWF)JDZ +17Y)BMG +DFQ)Y7W +8VB)Y1Z +GKD)CJJ +88X)HNR +Z1N)L94 +681)QJN +4RV)HMD +SCQ)Z75 +HH3)6TJ +LX1)2RV +7TX)XNG +RQR)2Y3 +TS4)NGL +F8L)TXG +NM8)4HT +PVD)5WC +PG1)WW9 +QJY)4B9 +88C)RGL +L1Q)1XB +DR4)MVN +3X2)8TP +CG4)RVJ +PF7)BR6 +YLJ)KX1 +KS8)SKX +1PW)DJH +DV9)J5D +5JX)4LL +H27)JW5 +PHW)127 +BYH)27N +71V)WSP +VL2)J64 +TC7)5TP +JNR)DJF +SQQ)R6X +RMD)458 +T2Q)LSS +9XZ)1QP +S1H)QDP +SST)3N8 +XKZ)FN3 +QQ6)VZ2 +DH7)DCH +112)ZCN +B3G)HX8 +LCZ)3WP +4RR)3ZN +PCC)BPP +QST)NKL +NYX)F3N +84F)HKL +CZB)2V6 +YWS)V17 +65J)FNB +Q8W)6MP +5TC)HCR +8G2)NGP +D23)4ZZ +5WX)71P +KHX)93H +XH2)KS8 +Z54)112 +1LJ)GHN +X5G)5NK +X5Y)9LV +JYR)253 +5GJ)HPR +QRM)XFR +4NQ)913 +6HJ)B63 +SFK)6SM +7FG)RMD +TKJ)JWT +1XB)LXM +WST)1VG +NFW)HZC +JWK)LC7 +YS8)PC5 +WXV)F8K +27J)J7M +KKX)HH3 +7ZH)XYD +K53)TDK +MX7)8NR +RPY)PSL +4ZZ)S61 +YYQ)519 +7VG)91Y +918)JT8 +42Y)MRN +8MK)WK4 +5ZY)F3H +JNX)MP3 +RQZ)YOU +Z7R)JG9 +FXR)5QX +PZ4)22G +JFZ)9JD +QHY)9QD +ZDJ)Q93 +2XD)RJC +1PK)GFZ +WKX)LXH +G4G)6LV +SDS)X21 +RYC)3Z8 +G2D)5ZJ +F8K)PZ6 +96T)5YF +3C7)VX7 +N7S)LKR +P65)N5Q +RLS)7F9 +1CJ)X27 +3VK)J26 +VRF)8G2 +TMQ)FK4 +LVX)Y31 +139)9QT +7MS)PG1 +1T2)ZNN +38W)S9X +ZF8)681 +SZL)ZHB +4S2)CY4 +STM)T31 +XHF)TS4 +HTX)S8V +D43)QPN +RYT)WKX +BMG)MRV +Z6F)VRF +V72)YYQ +G8H)Z7K +51F)3HJ +3CJ)TH9 +GXR)TFR +ZFT)FXW +S61)YKQ +MRV)7J6 +GJR)SZP +ZPG)JBR +NKG)NKY +VBD)7TX +TZP)YS8 +LF1)8LD +GXF)M3K +NGL)YLJ +512)DQS +3HT)KWN +KMR)CM5 +18C)SVC +LST)7VD +YX5)JGZ +4P5)9DN +KLX)JPJ +BCJ)JG1 +LNG)RKH +7VD)GXK +GT1)BSD +LHM)5LG +H7C)5GC +HZC)5WW +QCF)JTJ +V95)ZY6 +GT1)GH9 +B5L)KWR +H6M)6DV +NCH)PYP +R92)LXF +S3D)V1B +WDT)MMN +GXK)RXL +QMK)8PM +8LL)T2Q +L2Q)W25 +V48)KZP +LZ5)4S2 +SM2)P49 +ZNN)HCC +63H)B3G +9FC)7PQ +LFY)YM8 +DCP)GVS +JFQ)FCZ +NVC)CT8 +K8Q)1M5 +N5Q)8K6 +MK5)5SY +6Q2)BWQ +17W)SK9 +K2T)MK5 +WDT)M41 +DJF)RZD +RJ8)VSC +GJV)NVF +8QQ)N5B +P37)ZTM +FQG)CYK +VPF)8L3 +JG1)1X2 +3VK)3X8 +199)DDQ +2DH)HG7 +K1Q)L68 +9PK)F3T +1VG)2ZR +DXD)799 +FC6)2W2 +CY4)7DT +3FM)B71 +153)YMN +137)ZQB +QDP)9WW +1SW)GXF +QHY)4M3 +2XK)HDM +B78)XK8 +HMD)RX9 +TDX)51M +NR4)31N +QCT)YSW +RLY)LNP +R9H)BLN +XXY)TXL +9H6)XBT +CD9)H1X +GTH)K43 +NLK)7BT +KZP)CTV +PTC)DVZ +TH9)9L9 +5WC)3CC +MC1)YTR +TLB)SDK +FL2)SHF +WHG)X7P +57R)PKT +RX4)2QB +542)JZQ +Y7W)918 +9QD)87J +3LN)MT2 +TFR)FMS +LDK)VBD +P57)JHP +1NL)9ZB +G9T)YGH +YBG)CJF +PKT)GRG +8LD)YX5 +XFR)MC1 +B71)3X2 +RNR)81K +ZSR)3LN +XGT)G8H +YPT)KSV +BJY)BHM +QPN)G9T +CH3)5G6 +YW1)DXZ +NR1)TDX +41Z)SST +4RX)LF1 +58B)CNL +CNL)7QK +PCC)LFY +PL8)4RX +WS4)MJK +XFR)7S8 +VB4)QC2 +SDK)HZ4 +N42)FCL +TNC)QH2 +LQT)VGZ +HG7)FC6 +7X8)YQC +G1F)PL8 +7VD)YJX +J7H)9TC +X1X)WST +5G6)69N +4RT)V3G +L2T)F8L +G2Y)LCZ +XYD)SBN +R8G)LP9 +6RB)LDP +H6J)NLK +F84)WGN +L1W)XGG +8J9)ZPG +FRW)PZ4 +WWX)F84 +Z86)3VK +LYP)8LL +GMM)BHX +N7V)GT8 +5LH)7D3 +QLX)ZF8 +H4Q)DV9 +BW4)JXK +SXG)H14 +MKP)927 +T28)MQ7 +YL3)K35 +253)28S +JW5)KSR +2RY)DR4 +MJH)NPQ +7GH)QDD +VBY)D6C +783)5WX +MRN)44R +9ZM)D9Z +Y1Z)WC4 +7PQ)NST +24S)KMR +K1V)ZP1 +J7M)SPP +T43)JFQ +3GF)24S +JRR)NR4 +HN5)VL2 +JMQ)RRJ +Z6B)9W5 +T16)5ZY +Y7W)D7D +519)YPT +5WD)W3J +Q8J)5S9 +V8W)XS9 +2WM)FYP +NWT)VB7 +TDK)Y55 +44R)B1X +F3N)Q6K +ZP1)BH1 +FC6)2D9 +R9W)G2D +NMM)RK2 +VX7)TH4 +3VZ)2DB +BWQ)2C1 +WW6)HV4 +CX1)3HT +M23)WVY +PWP)4Z1 +D86)LQT +2VC)L4P +KGX)1SW +5W3)NL6 +TTK)WXX +FTC)TKK +KPF)11H +YKT)HN5 +TSP)H7L +4M3)NCH +QPF)9NC +318)4DN +DF7)349 +F3T)B78 +RKH)VHC +V52)42Z +ZGT)B7T +MVX)QJY +RPR)L2T +H14)1CJ +MP1)CQD +D4W)KGT +8FS)J7H +VGW)25P +CM5)M1V +5WW)TQZ +N1R)KRX +32T)DH7 +BZW)STM +N8G)ZD9 +51M)L1C +2D9)9G7 +J3D)V77 +Q89)7PF +2L2)ZCB +RR7)Q89 +3RP)232 +Z1N)C9R +H7L)6NX +DJS)PGP +VXT)65J +7D3)1BF +DJ2)17W +FK4)38B +D9Z)WMC +4J3)PF7 +TWP)L13 +BPK)WRP +232)318 +58R)H27 +DW5)H6J +J26)L1Q +WST)137 +5J9)LVJ +C81)W1L +CF1)5VW +X21)5J9 +535)733 +HDM)4RV +GR8)3Y6 +D53)TZP +RP2)4FP +Q4L)J2S +27N)WWX +B7T)YW7 +BNF)51F +1TP)Q7L +JK9)GTJ +WM2)S1H +RXL)2RY +JWT)G86 +JT8)5LH +XW4)G9M +JKB)ZDJ +7VN)1T2 +JPJ)J9R +PR3)FF4 +D7D)SFK +519)Q4L +NYW)GHQ +2G1)QGM +Y7S)SAN +VGZ)WWN +NKY)G55 +LC7)BQJ +DV7)27F +P27)36R +8CS)CT4 +3WP)KKX +LNP)MKP +V5G)WXV +TCS)GT1 +5S9)V5N +YKC)G3G +FK8)GJ8 +ZNN)FL2 +68F)P6P +M39)2DH +MZB)LBQ +HFZ)GRD +PQH)8Y6 +KGT)8VB +FPS)ZRH +MG2)6H8 +2KL)D23 +MYQ)NDY +159)B8L +NJT)7VG +87J)41Z +V17)34F +8GT)C9X +ZF9)RFV +G55)YQ3 +6JV)M9B +4DN)CWR +DCH)CH3 +Q89)WBP +P3Z)XS5 +GRV)9PK +4V2)GC4 +LBQ)7FG +ZWR)ZG1 +RZD)N67 +7J5)542 +SHF)CNJ +LQQ)2TB +YDW)BMN +8NR)8RY +28S)QCF +QC2)KTR +31N)1L2 +FRF)C32 +X7P)LX1 +YGH)7QW +XK8)7XL +SW2)ZF9 +M6M)S3D +8XR)DFQ +V5N)JHQ +MHN)Z6X +J64)D4W +LDP)R5Z +W2J)G6S +SVX)Z6B +W1L)71V +ZYJ)2G1 +5ZJ)D8G +9Q1)Z54 +51M)QZZ +Y1S)F31 +S12)Q16 +L1Q)1WM diff --git a/2019/input/ten.txt b/2019/input/ten.txt new file mode 100644 index 0000000..716efc4 --- /dev/null +++ b/2019/input/ten.txt @@ -0,0 +1,20 @@ +.###.###.###.#####.# +#####.##.###..###..# +.#...####.###.###### +######.###.####.#### +#####..###..######## +#.##.###########.#.# +##.###.######..#.#.# +.#.##.###.#.####.### +##..#.#.##.######### +###.#######.###..##. +###.###.##.##..####. +.##.####.##########. +#######.##.###.##### +#####.##..####.##### +##.#.#####.##.#.#..# +###########.#######. +#.##..#####.#####..# +#####..#####.###.### +####.#.############. +####.#.#.##########. diff --git a/2019/input/three.txt b/2019/input/three.txt new file mode 100644 index 0000000..fcb8502 --- /dev/null +++ b/2019/input/three.txt @@ -0,0 +1,2 @@ +R998,U547,L703,D251,L776,U837,R100,U240,R197,D216,L220,U606,L437,U56,R940,U800,L968,D464,L870,D797,L545,D824,R790,U5,R347,D794,R204,U538,L247,U385,L103,D260,L590,U813,L549,U309,L550,U321,R862,D686,R368,D991,R451,D836,R264,D138,L292,D319,L784,D369,R849,U865,R776,D726,R223,D118,L790,D208,L836,D592,R310,D36,R991,U674,L205,U407,R422,U350,L126,D320,L239,U353,L509,U48,R521,D544,L157,D551,R614,D493,R407,D965,R498,U248,R826,U573,L782,D589,R616,D992,L806,D745,R28,U142,L333,D849,L858,D617,R167,U341,R46,U940,L615,D997,L447,D604,R148,U561,R925,D673,R441,U200,R458,U193,L805,D723,L208,U600,L926,U614,R660,D183,L408,D834,R248,U354,L110,U391,L37,U599,L287,U28,R859,D936,L404,D952,R11,U20,R708,U218,L800,U750,R936,D213,R6,D844,R728,D391,R114,U406,R390,U791,L199,D397,R476,D583,R99,U419,R575,D836,L896,U780,L77,U964,R441,U723,R248,D170,R527,D94,L39,U645,L338,D728,R503,U641,L358,D287,R171,U368,R176,D986,R821,U912,L231,D206,L451,U900,L35,D490,R190,D180,L937,D500,R157,U989,L336,U202,R178,U52,R931,U306,L85,D866,R756,U715,L521,D977,R936,U4,R207,D384,L785,U138,L682,U488,L537,U250,L877,D446,R849,U35,R258,U784,R263,D494,L324,U601,R302,U473,L737,D143,R184,D967,R95,U51,L713,U733,R297,U740,R677,D715,R750,U143,L980,U260,R915,D535,R202,U460,R365,U956,L73,U441,R182,D982,L869,D755,L837,D933,L856,D341,R189,D519,L387,D144,R575,U682,R317,U838,R154,D201,R237,D410,L43,U853,L495,U983,L953,U220,R697,D592,R355,U377,R792,U824,L441,U783,R258,D955,R451,D178,L151,D435,L232,U923,L663,U283,L92,D229,R514 +L995,U122,R472,U470,R725,U906,L83,U672,R448,U781,L997,U107,R66,D966,L780,D181,L662,U158,R804,D837,L237,U164,L98,U582,R925,D806,L153,D843,R601,U941,L968,D528,R482,D586,R15,U370,L592,U836,R828,U676,R606,D20,R841,U117,L262,U377,R375,U503,R166,D398,R161,D9,R140,D188,R895,D226,R77,U28,L727,D72,L51,U425,R370,D377,L801,D525,R102,D568,L416,D300,R415,U199,R941,U211,R285,U719,L259,U872,L959,U350,L196,D830,R515,U899,R298,U875,R946,U797,R108,U461,R999,D49,L369,D472,R83,D265,L825,D163,R162,U906,L816,D241,L587,D801,R601,D630,R937,U954,L379,D347,R831,D337,L192,D649,L853,U270,R162,D892,L26,D663,L276,U891,R843,U67,R225,D88,R686,U662,R794,D814,L200,D887,R567,U363,L863,U16,R975,D470,R714,U771,L267,D402,R75,U98,L686,U565,R584,D402,L824,D927,R71,U39,L174,D494,L358,D626,R616,D369,R471,U881,L428,U53,R862,U749,L847,D944,L887,D695,R442,U870,L993,U315,L878,U100,L480,D354,L12,D533,L236,D364,R450,U679,L926,D391,R313,D953,L560,D740,L974,D119,L370,U404,R339,U233,R901,U514,R584,D495,R308,U170,R759,U592,R388,U396,R477,U670,R906,D687,L874,U352,R124,U700,R289,D524,L93,D817,R408,D776,L235,D928,L534,D296,R116,U995,L63,D903,R758,U881,L530,U498,R573,D626,L26,U269,R237,U287,L840,D603,R948,D567,R89,U552,L299,D774,R863,D182,R773,D108,L137,U88,L731,U793,L267,U902,L41,U258,L156,U361,R389,D839,L976,U960,L342,D489,R816,U391,L393,U601,R255,D629,R832,U877,L34,D373,L809,D679,L104,U901,R157,U468,R143,U896,L637,D577,L545,D486,L970,D130,L305,D909,R984,D500,L935,U949,R525,D547,L786,U106,L269,D511,L919 diff --git a/2019/input/two.txt b/2019/input/two.txt new file mode 100644 index 0000000..54b87b7 --- /dev/null +++ b/2019/input/two.txt @@ -0,0 +1 @@ +1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,10,1,19,1,6,19,23,2,23,6,27,1,5,27,31,1,31,9,35,2,10,35,39,1,5,39,43,2,43,10,47,1,47,6,51,2,51,6,55,2,55,13,59,2,6,59,63,1,63,5,67,1,6,67,71,2,71,9,75,1,6,75,79,2,13,79,83,1,9,83,87,1,87,13,91,2,91,10,95,1,6,95,99,1,99,13,103,1,13,103,107,2,107,10,111,1,9,111,115,1,115,10,119,1,5,119,123,1,6,123,127,1,10,127,131,1,2,131,135,1,135,10,0,99,2,14,0,0 diff --git a/2019/nine.go b/2019/nine.go new file mode 100644 index 0000000..432d780 --- /dev/null +++ b/2019/nine.go @@ -0,0 +1,166 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" + "strconv" +) + +func main() { + var memory []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) + } + memory = append(memory, arg) + start = i + 1 + size++ + } + } + // fmt.Println(execute(memory, size)) + // noun, verb := etucexe(memory, size, 19690720) + // fmt.Println(100*noun + verb) + execute(memory, size) +} + +func split(memory []int, i, size, relative int) (int, int, int) { + mode := memory[i] / 100 + three, two, one := i+3, i+2, i+1 + if size-i > 1 { + if mode%10 == 0 { + one = memory[i+1] + } else if mode%10 == 2 { + one = relative + memory[i+1] + } + if size-i > 2 { + if mode/10%10 == 0 { + two = memory[i+2] + } else if mode%10 == 2 { + two = relative + memory[i+2] + } + if size-i > 3 { + if mode/100 == 0 { + three = memory[i+3] + } else if mode%10 == 2 { + three = relative + memory[i+3] + } + } + } + } + return three, two, one +} + +func execute(memory []int, size int) []int { + /* todo: said "memory" functionality could be [pos, value]int + * i.e. when memory outside initial bounds wants to be accessed, + * it writes to a new element of this slice + * to access elements of the array, iterate through while checking each position + * additionally, to ensure there aren't conflicting "positions" in the array, + * do the above iteration process, if not, appends (this requires a total int) + */ + /* + var swap [][2]int + */ + + // off-topic todo: https://www.golangprograms.com/example-arrays-of-arrays-arrays-of-slices-slices-of-arrays-and-slices-of-slices.html + // does this mean i can remove total / size because if so YES + for i := 0; i < 4000; i++ { // bad (example: no auto-termination due to 0 replacing nothingness) + memory = append(memory, 0) + } + relative := 0 // initial value of the relative base + for i := 0; i < len(memory); { + // bounds check + opcode := memory[i] % 100 + three, two, one := split(memory, i, size, relative) + //fmt.Println("test:", opcode) + // actually what might work better than replacing all below would be + // checking if the next three values are out of bounds or not + // and then replacing them + // no bad idea large addition exists + switch opcode { + case 1: // adds + memory[three] = memory[one] + memory[two] + i += 4 + case 2: // multiplies + // if out of bounds + // swap = append(swap, {memory[three], memory[one] * memory[two]}) + // else + memory[three] = memory[one] * memory[two] + i += 4 + case 3: // input + var input int + fmt.Print("Input: ") + resp, err := fmt.Scanf("%d", &input) // interesting note: anything following a valid integer is run by bash + if err != nil { + fmt.Println(resp, err) + os.Exit(0) + } + // out of bounds check + memory[one] = input // not affected by modes + i += 2 + case 4: // output + fmt.Println(memory[one]) + i += 2 + case 5: // jump-if-true + if memory[one] != 0 { + i = memory[two] + } else { + i += 3 + } + case 6: // jump-if-false + if memory[one] == 0 { + i = memory[two] + } else { + i += 3 + } + case 7: // less than + if memory[one] < memory[two] { + memory[memory[i+3]] = 1 // instructions: _position_ given by the third parameter + } else { + memory[memory[i+3]] = 0 + } + i += 4 + case 8: // equals + if memory[one] == memory[two] { + memory[memory[i+3]] = 1 + } else { + memory[memory[i+3]] = 0 + } + i += 4 + case 9: // adjusts the relative base + relative += memory[one] // interesting behavior when changing to i+1 + i += 2 + case 99: // terminate + return memory + default: + fmt.Println("Unsupported code", opcode, "at", i) + os.Exit(0) + } + } + return memory +} + +func etucexe(memory []int, size, output int) (int, int) { + var volatile []int + for i := 0; i < len(memory); i++ { + for j := 0; j < len(memory); j++ { + volatile = append([]int(nil), memory...) // reset volatile to memory + volatile[1], volatile[2] = i, j + if execute(volatile, size)[0] == output { + return i, j + } + } + } + return -1, -1 +} diff --git a/2019/one.go b/2019/one.go new file mode 100644 index 0000000..cf27820 --- /dev/null +++ b/2019/one.go @@ -0,0 +1,40 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" + "strconv" +) + +func main() { + start, sum, fuelsum := 0, 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] == '\n' { + arg, err := strconv.Atoi(string(file[start:i])) // i-1?? + if err != nil { + panic(err) + } + start = i + 1 + sum += (arg / 3) - 2 + fuelsum += tyranny(arg) + } + } + fmt.Println(sum) + fmt.Println(fuelsum) +} + +func tyranny(mass int) int { + subtotal := 0 + for fuel := (mass / 3) - 2; fuel >= 0; fuel = (fuel / 3) - 2 { + subtotal += fuel + } + return subtotal +} diff --git a/2019/seven.go b/2019/seven.go new file mode 100644 index 0000000..d71d827 --- /dev/null +++ b/2019/seven.go @@ -0,0 +1,141 @@ +package main + +import ( + "fmt" + "os" + "strconv" +) + +func main() { + var memory []int + size := 0 + for i := 1; i < len(os.Args); i++ { + arg, err := strconv.Atoi(os.Args[i]) + if err != nil { + panic(err) + } + memory = append(memory, arg) + size++ + } + // fmt.Println(execute(memory, size)) + // noun, verb := etucexe(memory, size, 19690720) + // fmt.Println(100*noun + verb) + // execute(memory, size) + fmt.Println(thrust(memory, size)) +} + +func thrust(memory []int, size int) int { // 120 total + max := 0 + for a := 0; a < 5; a++ { + for b:=0; b < 4; b++ { + for c:=0; + } + + + + a, b, c, d, e := i/10000, i/1000%10, i/100%100, i/10%1000, i%10000 + a = execute(memory, size) // stdin fill this with a, 0 + b = execute(memory, size) // stdin fill this with b, 0 + c = execute(memory, size) // stdin fill this with c, 0 + d = execute(memory, size) // stdin fill this with d, 0 + e = execute(memory, size) // stdin fill this with e, 0 + if (e > max) { + max = e + } + return max +} + +func split(memory []int, i, size int) (int, int, int) { + mode := memory[i] / 100 + three, two, one := i+3, i+2, i+1 + if size-i > 1 { + if mode%10 == 0 { + one = memory[i+1] + } + if size-i > 2 { + if mode/10%10 == 0 { + two = memory[i+2] + } + if size-i > 3 { + if mode/100 == 0 { + three = memory[i+3] + } + } + } + } + return three, two, one +} + +func execute(memory []int, size int) []int { + for i := 0; i < len(memory); { + opcode := memory[i] % 100 + three, two, one := split(memory, i, size) + switch opcode { + case 1: // adds + memory[three] = memory[one] + memory[two] + i += 4 + case 2: // multiplies + memory[three] = memory[one] * memory[two] + i += 4 + case 3: // input + var input int + fmt.Print("Input: ") + resp, err := fmt.Scanf("%d", &input) + if err != nil { + fmt.Println(resp, err) + os.Exit(0) + } + memory[one] = input // not affected by modes + i += 2 + case 4: // output + fmt.Println(memory[one]) + i += 2 + case 5: // jump-if-true + if memory[one] != 0 { + i = memory[two] // ??? + } else { + i += 3 + } + case 6: // jump-if-false + if memory[one] == 0 { + i = memory[two] // ??? + } else { + i += 3 + } + case 7: // less than + if memory[one] < memory[two] { + memory[memory[i+3]] = 1 + } else { + memory[memory[i+3]] = 0 + } + i += 4 + case 8: // equals + if memory[one] == memory[two] { + memory[memory[i+3]] = 1 + } else { + memory[memory[i+3]] = 0 + } + i += 4 + case 99: // terminate + return memory + default: + fmt.Println("Unsupported code", opcode, "at", i) + os.Exit(0) + } + } + return memory +} + +func etucexe(memory []int, size, output int) (int, int) { + var volatile []int + for i := 0; i < len(memory); i++ { + for j := 0; j < len(memory); j++ { + volatile = append([]int(nil), memory...) // reset volatile to memory + volatile[1], volatile[2] = i, j + if execute(volatile, size)[0] == output { + return i, j + } + } + } + return -1, -1 +} diff --git a/2019/six.go b/2019/six.go new file mode 100644 index 0000000..646313d --- /dev/null +++ b/2019/six.go @@ -0,0 +1,25 @@ +package main + +import ( + "io/ioutil" + "os" +) + +func main() { + 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 +} + +func orbits(planet string) []string { + + var chain []string + + return chain +} diff --git a/2019/ten.go b/2019/ten.go new file mode 100644 index 0000000..562299a --- /dev/null +++ b/2019/ten.go @@ -0,0 +1,47 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" +) + +func main() { + var region [][]bool + x, y, size := 0, 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] == '#' { + region[x][y] = true + x++ + } else if file[i] == '\n' { + x = 0 + y++ + } + } + max := 0 + fmt.Println("Maximum detectable asteroids:", detect(region, x, y)) +} + +func detect(region [][]bool, width, height int) int { + for i:= 0; i < width; i++ { + for j := 0; j < height; j++ { + if region[i][j] { + for k:= 0; k < width; k++ { + for l := 0; l < width; l++ { + + } + } + } + } + } + + slope := + return +} diff --git a/2019/three.go b/2019/three.go new file mode 100644 index 0000000..2c79a18 --- /dev/null +++ b/2019/three.go @@ -0,0 +1,156 @@ +package main + +import ( + "fmt" + "io/ioutil" + "os" +) + +func main() { + var directions [][]string + var temp []string + start := 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 string(file[i]) == "," || file[i] == '\n' { + temp = append(temp, string(file[start:i])) + start = i + 1 + if file[i] == '\n' { + directions[] = append(directions[], temp) + temp = nil + } + } + } + fmt.Println(directions) + + // grid [][]int := boolgrid(directions) + +} + +// ax, ay, at := taxi(directions[0]) +// bx, by, bt := taxi(directions[1]) +// for i := 0; i < at; i++ { +// for j := 0; j < at; j++ { +// for k := 0; k < +// ax[i][j] +// } +// } +// abx, aby + +// grid = taxi(directions, taxi(directions2, grid)) +// min, x, y := 4000, 0, 0 +// for i := 0; i < len(grid); i++ { +// for j := 0; j < len(grid); j++ { +// x, y = int(math.Abs(float64(i-500))), int(math.Abs(float64(j-500))) +// if grid[i][j] == 2 && x+y < min { +// fmt.Println(i-500, j-500) +// min = x + y +// } + +// } +// } +// fmt.Println("Manhattan distance to intersection:", min) +// } + +// func taxi(directions []string) ([]int, []int, int) { +// var horislice, vertslice []int +// total := 0 +// for i := 0; i < len(directions); i++ { +// direction := directions[i][0] +// displacement, err := strconv.Atoi(directions[i][1:]) +// if err != nil { +// panic(err) +// } +// switch direction { +// case 'L': +// for j := 0; j < displacement; j++ { +// horislice = append(horislice, horislice[total]-j) +// vertslice = append(vertslice, vertslice[total]) +// total++ +// } +// case 'R': +// for j := 0; j < displacement; j++ { +// horislice = append(horislice, horislice[total]+j) +// vertslice = append(vertslice, vertslice[total]) +// total++ +// } +// case 'U': +// for j := 0; j < displacement; j++ { +// vertslice = append(vertslice, vertslice[total]+j) +// horislice = append(horislice, horislice[total]) +// total++ +// } +// case 'D': +// for j := 0; j < displacement; j++ { +// vertslice = append(vertslice, vertslice[total]-j) +// horislice = append(horislice, horislice[total]) +// total++ +// } +// default: +// fmt.Println("Unhandled direction", string(direction)) +// os.Exit(0) +// } +// } +// return horislice, vertslice, total +// } + +// func taxi(directions []string, grid [4000][4000]int) [4000][4000]int { // sign convention: an array, left to right, top to bottom, beginning in the top left corner +// x, y := len(grid)/2, len(grid[0])/2 // start in center +// var boolgrid [4000][4000]bool +// for i := 0; i < len(directions); i++ { +// direction := directions[i][0] +// displacement, err := strconv.Atoi(directions[i][1:]) +// if err != nil { +// panic(err) +// } +// switch direction { +// case 'L': +// for j := 0; j < displacement; j++ { +// x-- +// if !boolgrid[x][y] { +// boolgrid[x][y] = true +// } +// } +// case 'R': +// for j := 0; j < displacement; j++ { +// x++ +// if !boolgrid[x][y] { +// boolgrid[x][y] = true +// } +// } +// case 'U': +// for j := 0; j < displacement; j++ { +// y-- +// if !boolgrid[x][y] { +// boolgrid[x][y] = true +// } +// } +// case 'D': +// for j := 0; j < displacement; j++ { +// y++ +// if !boolgrid[x][y] { +// boolgrid[x][y] = true +// } +// } +// default: +// fmt.Println("Unhandled direction", string(direction)) +// os.Exit(0) +// } +// fmt.Println(string(direction), displacement, x, y) +// } +// for i := 0; i < len(grid); i++ { +// for j := 0; j < len(grid[0]); j++ { +// if boolgrid[i][j] { +// grid[i][j]++ +// } +// } +// } +// return grid // each element is equal to the numbers of wires on it +// } diff --git a/2019/two.go b/2019/two.go new file mode 100644 index 0000000..8108c87 --- /dev/null +++ b/2019/two.go @@ -0,0 +1,66 @@ +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 +} |