From eb2eacdf9e826b01d955df12f226fbb21c4927a1 Mon Sep 17 00:00:00 2001 From: alexchao26 Date: Sun, 13 Dec 2020 02:34:03 -0500 Subject: [PATCH] updated template script for test args order --- 2020/day14/main.go | 9 ++---- 2020/day14/main_test.go | 44 +++++++++++++------------- 2020/day15/main.go | 9 ++---- 2020/day15/main_test.go | 44 +++++++++++++------------- 2020/day16/main.go | 9 ++---- 2020/day16/main_test.go | 44 +++++++++++++------------- 2020/day17/main.go | 9 ++---- 2020/day17/main_test.go | 44 +++++++++++++------------- 2020/day18/main.go | 9 ++---- 2020/day18/main_test.go | 44 +++++++++++++------------- 2020/day19/main.go | 9 ++---- 2020/day19/main_test.go | 44 +++++++++++++------------- 2020/day20/main.go | 8 +---- 2020/day20/main_test.go | 44 +++++++++++++------------- 2020/day21/main.go | 8 +---- 2020/day21/main_test.go | 44 +++++++++++++------------- 2020/day22/main.go | 8 +---- 2020/day22/main_test.go | 44 +++++++++++++------------- 2020/day23/main.go | 8 +---- 2020/day23/main_test.go | 44 +++++++++++++------------- 2020/day24/main.go | 8 +---- 2020/day24/main_test.go | 44 +++++++++++++------------- 2020/day25/main.go | 8 +---- 2020/day25/main_test.go | 44 +++++++++++++------------- 2020/intcode.go | 61 ++++++++++++++++++++++++++++++++++++ scripts/template/template.go | 4 +-- 26 files changed, 333 insertions(+), 362 deletions(-) create mode 100644 2020/intcode.go diff --git a/2020/day14/main.go b/2020/day14/main.go index eac4896..bde80ba 100644 --- a/2020/day14/main.go +++ b/2020/day14/main.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + "github.com/alexchao26/advent-of-code-go/mathutil" "github.com/alexchao26/advent-of-code-go/util" ) @@ -33,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day14/main_test.go b/2020/day14/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day14/main_test.go +++ b/2020/day14/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day15/main.go b/2020/day15/main.go index eac4896..bde80ba 100644 --- a/2020/day15/main.go +++ b/2020/day15/main.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + "github.com/alexchao26/advent-of-code-go/mathutil" "github.com/alexchao26/advent-of-code-go/util" ) @@ -33,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day15/main_test.go b/2020/day15/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day15/main_test.go +++ b/2020/day15/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day16/main.go b/2020/day16/main.go index eac4896..bde80ba 100644 --- a/2020/day16/main.go +++ b/2020/day16/main.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + "github.com/alexchao26/advent-of-code-go/mathutil" "github.com/alexchao26/advent-of-code-go/util" ) @@ -33,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day16/main_test.go b/2020/day16/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day16/main_test.go +++ b/2020/day16/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day17/main.go b/2020/day17/main.go index eac4896..bde80ba 100644 --- a/2020/day17/main.go +++ b/2020/day17/main.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + "github.com/alexchao26/advent-of-code-go/mathutil" "github.com/alexchao26/advent-of-code-go/util" ) @@ -33,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day17/main_test.go b/2020/day17/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day17/main_test.go +++ b/2020/day17/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day18/main.go b/2020/day18/main.go index eac4896..bde80ba 100644 --- a/2020/day18/main.go +++ b/2020/day18/main.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + "github.com/alexchao26/advent-of-code-go/mathutil" "github.com/alexchao26/advent-of-code-go/util" ) @@ -33,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day18/main_test.go b/2020/day18/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day18/main_test.go +++ b/2020/day18/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day19/main.go b/2020/day19/main.go index eac4896..bde80ba 100644 --- a/2020/day19/main.go +++ b/2020/day19/main.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + "github.com/alexchao26/advent-of-code-go/mathutil" "github.com/alexchao26/advent-of-code-go/util" ) @@ -33,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day19/main_test.go b/2020/day19/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day19/main_test.go +++ b/2020/day19/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day20/main.go b/2020/day20/main.go index 9118900..bde80ba 100644 --- a/2020/day20/main.go +++ b/2020/day20/main.go @@ -34,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day20/main_test.go b/2020/day20/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day20/main_test.go +++ b/2020/day20/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day21/main.go b/2020/day21/main.go index 9118900..bde80ba 100644 --- a/2020/day21/main.go +++ b/2020/day21/main.go @@ -34,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day21/main_test.go b/2020/day21/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day21/main_test.go +++ b/2020/day21/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day22/main.go b/2020/day22/main.go index 9118900..bde80ba 100644 --- a/2020/day22/main.go +++ b/2020/day22/main.go @@ -34,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day22/main_test.go b/2020/day22/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day22/main_test.go +++ b/2020/day22/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day23/main.go b/2020/day23/main.go index 9118900..bde80ba 100644 --- a/2020/day23/main.go +++ b/2020/day23/main.go @@ -34,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day23/main_test.go b/2020/day23/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day23/main_test.go +++ b/2020/day23/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day24/main.go b/2020/day24/main.go index 9118900..bde80ba 100644 --- a/2020/day24/main.go +++ b/2020/day24/main.go @@ -34,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day24/main_test.go b/2020/day24/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day24/main_test.go +++ b/2020/day24/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/day25/main.go b/2020/day25/main.go index 9118900..bde80ba 100644 --- a/2020/day25/main.go +++ b/2020/day25/main.go @@ -34,19 +34,13 @@ func part1(input string) int { } func part2(input string) int { - parsed := parseInput(input) - _ = parsed - return 0 } -func parseInput(input string) []int { - var ans []int - +func parseInput(input string) (ans []int) { lines := strings.Split(input, "\n") for _, l := range lines { ans = append(ans, mathutil.StrToInt(l)) } - return ans } diff --git a/2020/day25/main_test.go b/2020/day25/main_test.go index ee82d4e..22a4487 100644 --- a/2020/day25/main_test.go +++ b/2020/day25/main_test.go @@ -1,18 +1,18 @@ package main -import "testing" +import ( + "testing" +) -var tests1 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart1(t *testing.T) { - for _, tt := range tests1 { +func Test_part1(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part1(tt.input); got != tt.want { t.Errorf("part1() = %v, want %v", got, tt.want) @@ -21,17 +21,15 @@ func TestPart1(t *testing.T) { } } -var tests2 = []struct { - name string - want int - input string - // add extra args if needed -}{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, -} - -func TestPart2(t *testing.T) { - for _, tt := range tests2 { +func Test_part2(t *testing.T) { + tests := []struct { + name string + input string + want int + }{ + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := part2(tt.input); got != tt.want { t.Errorf("part2() = %v, want %v", got, tt.want) diff --git a/2020/intcode.go b/2020/intcode.go new file mode 100644 index 0000000..426cb4b --- /dev/null +++ b/2020/intcode.go @@ -0,0 +1,61 @@ +package main + +import ( + "fmt" + "strings" +) + +func newComputerFromInput(input string) computer { + var instructions []instruction + + for _, l := range strings.Split(input, "\n") { + inst := instruction{} + fmt.Sscanf(l, "%s %d", &inst.operation, &inst.argument) + instructions = append(instructions, inst) + } + + return computer{instructions: instructions} +} + +type computer struct { + instructions []instruction + index int + accumulator int +} + +type instruction struct { + operation string + argument int +} + +func (c *computer) step() { + switch inst := c.instructions[c.index]; inst.operation { + case "acc": + c.accumulator += inst.argument + c.index++ + case "jmp": + c.index += inst.argument + case "nop": + c.index++ + default: + panic("unhandled operation type" + inst.operation) + } +} + +// func isInfiniteLoop(comp computer) (finalAccumulatorVal int, isLoop bool) { +// ranInstructionsIndices := map[int]bool{} +// for comp.index < len(comp.instructions) { +// nextInst := comp.index +// // is an infinite loop, return out +// if ranInstructionsIndices[nextInst] { +// return 0, true +// } +// ranInstructionsIndices[nextInst] = true + +// comp.step() +// } + +// // instructions finished, return final accumulator & indicate it was not an +// // infinite loop +// return comp.accumulator, false +// } diff --git a/scripts/template/template.go b/scripts/template/template.go index 419204b..a894743 100644 --- a/scripts/template/template.go +++ b/scripts/template/template.go @@ -27,7 +27,7 @@ func Test_part1(t *testing.T) { input string want int }{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -44,7 +44,7 @@ func Test_part2(t *testing.T) { input string want int }{ - // {"actual", ACTUAL_ANSWER, util.ReadFile("input.txt")}, + // {"actual", util.ReadFile("input.txt"), ACTUAL_ANSWER}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {