summaryrefslogtreecommitdiff
path: root/2023/go/internal/day_06/part_02
diff options
context:
space:
mode:
Diffstat (limited to '2023/go/internal/day_06/part_02')
-rw-r--r--2023/go/internal/day_06/part_02/part_02.go81
-rw-r--r--2023/go/internal/day_06/part_02/part_02_test.go84
2 files changed, 0 insertions, 165 deletions
diff --git a/2023/go/internal/day_06/part_02/part_02.go b/2023/go/internal/day_06/part_02/part_02.go
deleted file mode 100644
index 316b169..0000000
--- a/2023/go/internal/day_06/part_02/part_02.go
+++ /dev/null
@@ -1,81 +0,0 @@
-package part_02
-
-import (
- "os"
- "strconv"
- "strings"
-)
-
-const USE_SAMPLE = false
-
-/**
- * Tried:
- * - 24655068 (correct!)
- */
-func Solve() {
- var filePath string
- if USE_SAMPLE {
- filePath = "../_input/day_06_part_02_sample.txt"
- } else {
- filePath = "../_input/day_06.txt"
- }
- contents, _ := os.ReadFile(filePath)
-
- lines := strings.Split(string(contents), "\r\n")
-
- timeLine := lines[0]
- time := parseTimeLine(timeLine)
-
- distLine := lines[1]
- distance := parseDistanceLine(distLine)
-
- answer := calculateAnswer(time, distance)
-
- println(answer)
-}
-
-func parseTimeLine(timeLine string) int {
- prefix := "Time:"
- return parseLine(prefix, timeLine)
-}
-
-func parseDistanceLine(distLine string) int {
- prefix := "Distance:"
- return parseLine(prefix, distLine)
-}
-
-func parseLine(prefix string, line string) int {
- withoutTitle := strings.TrimPrefix(line, prefix)
-
- numbers := []string{}
- for _, number := range strings.Split(withoutTitle, " ") {
- if number == "" {
- continue
- }
- numbers = append(numbers, number)
- }
-
- number := strings.Join(numbers, "")
- numberInt, err := strconv.Atoi(number)
- if err != nil {
- panic(err)
- }
-
- return numberInt
-}
-
-func calculateAnswer(maxTime int, recordDistance int) int {
- var greaterThanRecord []int
- for buttonPressedFor := 0; buttonPressedFor <= maxTime; buttonPressedFor++ {
- distance := calculateDistance(buttonPressedFor, maxTime)
- if distance > recordDistance {
- greaterThanRecord = append(greaterThanRecord, distance)
- }
- }
-
- return len(greaterThanRecord)
-}
-
-func calculateDistance(buttonPressedFor int, maxTime int) int {
- return buttonPressedFor * (maxTime - buttonPressedFor)
-}
diff --git a/2023/go/internal/day_06/part_02/part_02_test.go b/2023/go/internal/day_06/part_02/part_02_test.go
deleted file mode 100644
index 67924dc..0000000
--- a/2023/go/internal/day_06/part_02/part_02_test.go
+++ /dev/null
@@ -1,84 +0,0 @@
-package part_02
-
-import "testing"
-
-func TestParseTimeLine(t *testing.T) {
- tests := map[string]struct {
- input string
- expected int
- }{
- "sample": {"Time: 7 15 30", 71530},
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- actual := parseTimeLine(test.input)
- if actual != test.expected {
- t.Errorf("Expected %d, got %d", test.expected, actual)
- }
- })
- }
-}
-
-func TestParseDistLine(t *testing.T) {
- tests := map[string]struct {
- input string
- expected int
- }{
- "sample": {"Distance: 9 40 200", 940200},
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- actual := parseDistanceLine(test.input)
- if actual != test.expected {
- t.Errorf("Expected %d, got %d", test.expected, actual)
- }
- })
- }
-}
-
-func TestCalculateAnswer(t *testing.T) {
- tests := map[string]struct {
- maxTime int
- recordDistance int
- expected int
- }{
- "sample": {71530, 940200, 71503},
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- actual := calculateAnswer(test.maxTime, test.recordDistance)
- if actual != test.expected {
- t.Errorf("Expected %d, got %d", test.expected, actual)
- }
- })
- }
-}
-
-func TestCalculateDistance(t *testing.T) {
- tests := map[string]struct {
- maxTime int
- buttonPressedFor int
- expected int
- }{
- "7_7": {7, 7, 0},
- "7_6": {7, 6, 6},
- "7_5": {7, 5, 10},
- "7_4": {7, 4, 12},
- "7_3": {7, 3, 12},
- "7_2": {7, 2, 10},
- "7_1": {7, 1, 6},
- "7_0": {7, 0, 0},
- }
-
- for name, test := range tests {
- t.Run(name, func(t *testing.T) {
- actual := calculateDistance(test.buttonPressedFor, test.maxTime)
- if actual != test.expected {
- t.Errorf("Expected %d, got %d", test.expected, actual)
- }
- })
- }
-}