From 2d2a5e7bd6ec8428119efdca41fa0e53c465a071 Mon Sep 17 00:00:00 2001 From: Karl Spickermann Date: Fri, 3 Dec 2021 23:16:30 +0100 Subject: [PATCH] Move copy of array in filterNumbersPart2 --- src/day3/day3.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/day3/day3.go b/src/day3/day3.go index 76b0c53..b2f6259 100644 --- a/src/day3/day3.go +++ b/src/day3/day3.go @@ -27,8 +27,8 @@ func main() { } func part2(intArray [][]int) { - oxygenGeneratorRating, _ := filterNumbersPart2(append([][]int(nil), intArray...), 0) - co2ScrubberRating, _ := filterNumbersPart2(append([][]int(nil), intArray...), 1) + oxygenGeneratorRating, _ := filterNumbersPart2(intArray, 0) + co2ScrubberRating, _ := filterNumbersPart2(intArray, 1) fmt.Println(co2ScrubberRating * oxygenGeneratorRating) } @@ -42,21 +42,23 @@ func part1(intArray [][]int) { } func filterNumbersPart2(intArray [][]int, invert int) (int64, error){ - gammaArray := getGammaArray(intArray, invert) + intArrayCopy := make([][]int, len(intArray)) + copy(intArrayCopy, intArray) + gammaArray := getGammaArray(intArrayCopy, invert) i := 0 - for len(intArray) > 1 { + for len(intArrayCopy) > 1 { n := 0 - for _, number := range intArray { + for _, number := range intArrayCopy { if number[i] == gammaArray[i] { - intArray[n] = number + intArrayCopy[n] = number n++ } } - intArray = intArray[:n] - gammaArray = getGammaArray(intArray, invert) + intArrayCopy = intArrayCopy[:n] + gammaArray = getGammaArray(intArrayCopy, invert) i++ } - s, _ := json.Marshal(intArray[0]) + s, _ := json.Marshal(intArrayCopy[0]) intString := strings.Replace(strings.Trim(string(s), "[]"),",","",-1) return strconv.ParseInt(intString, 2, 64) }