Move copy of array in filterNumbersPart2

This commit is contained in:
Karl Spickermann 2021-12-03 23:16:30 +01:00
parent 6491807ab8
commit 2d2a5e7bd6

@ -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)
}