From d582965b1c3dacd6a63965a757ec4920a078883b Mon Sep 17 00:00:00 2001 From: Karl Spickermann Date: Mon, 6 Dec 2021 13:43:37 +0100 Subject: [PATCH] Day6 --- src/day6/day6.go | 61 ++++++++++++++++++++++++++++++++++++++++++ src/day6/day6Input.txt | 1 + src/day6/day6Test.txt | 1 + 3 files changed, 63 insertions(+) create mode 100644 src/day6/day6.go create mode 100644 src/day6/day6Input.txt create mode 100644 src/day6/day6Test.txt diff --git a/src/day6/day6.go b/src/day6/day6.go new file mode 100644 index 0000000..c989186 --- /dev/null +++ b/src/day6/day6.go @@ -0,0 +1,61 @@ +package main + +import ( + "AOC2021/src/helper" + "fmt" + "os" + "strings" +) + +func main() { + args := os.Args[1:] + input, err := helper.GetInput(args[0]) + if err != nil { + fmt.Println(err) + } + inputNumbers, _ := helper.MapToNumber(strings.Split(input[0], ",")) + fishArray := [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + for _, inputNumber := range inputNumbers { + fishArray[inputNumber] += 1 + } + fmt.Println(fishArray) + simulateNDays(fishArray, 80) + simulateNDays(fishArray, 256) +} + +func simulateNDays(fishArray [9]int, n int) { + i := 0 + for i < n { + daysPassed := 0 + fishArray, daysPassed = step(fishArray) + i += daysPassed + } + fmt.Println(getSum(fishArray)) +} + +func step(input [9]int) ([9]int, int) { + newArray := [9]int{0, 0, 0, 0, 0, 0, 0, 0, 0} + lowestTimerIndex := findIndexOfFirstNonzero(input) + amountCreatingFishes ,a1 := input[lowestTimerIndex] , input[lowestTimerIndex+1:] + copy(newArray[:], a1[:8-lowestTimerIndex]) + newArray[8] += amountCreatingFishes + newArray[6] += amountCreatingFishes + return newArray, lowestTimerIndex + 1 +} + +func getSum(input [9]int) int{ + sum := 0 + for _,number := range input { + sum += number + } + return sum +} + +func findIndexOfFirstNonzero(input [9]int) int { + for i, number := range input { + if number != 0 { + return i + } + } + return -1 +} \ No newline at end of file diff --git a/src/day6/day6Input.txt b/src/day6/day6Input.txt new file mode 100644 index 0000000..b30a9d2 --- /dev/null +++ b/src/day6/day6Input.txt @@ -0,0 +1 @@ +1,3,1,5,5,1,1,1,5,1,1,1,3,1,1,4,3,1,1,2,2,4,2,1,3,3,2,4,4,4,1,3,1,1,4,3,1,5,5,1,1,3,4,2,1,5,3,4,5,5,2,5,5,1,5,5,2,1,5,1,1,2,1,1,1,4,4,1,3,3,1,5,4,4,3,4,3,3,1,1,3,4,1,5,5,2,5,2,2,4,1,2,5,2,1,2,5,4,1,1,1,1,1,4,1,1,3,1,5,2,5,1,3,1,5,3,3,2,2,1,5,1,1,1,2,1,1,2,1,1,2,1,5,3,5,2,5,2,2,2,1,1,1,5,5,2,2,1,1,3,4,1,1,3,1,3,5,1,4,1,4,1,3,1,4,1,1,1,1,2,1,4,5,4,5,5,2,1,3,1,4,2,5,1,1,3,5,2,1,2,2,5,1,2,2,4,5,2,1,1,1,1,2,2,3,1,5,5,5,3,2,4,2,4,1,5,3,1,4,4,2,4,2,2,4,4,4,4,1,3,4,3,2,1,3,5,3,1,5,5,4,1,5,1,2,4,2,5,4,1,3,3,1,4,1,3,3,3,1,3,1,1,1,1,4,1,2,3,1,3,3,5,2,3,1,1,1,5,5,4,1,2,3,1,3,1,1,4,1,3,2,2,1,1,1,3,4,3,1,3 \ No newline at end of file diff --git a/src/day6/day6Test.txt b/src/day6/day6Test.txt new file mode 100644 index 0000000..a7af2b1 --- /dev/null +++ b/src/day6/day6Test.txt @@ -0,0 +1 @@ +3,4,3,1,2 \ No newline at end of file