1
0

3 Commitit 4738de7266 ... 6a119f018d

Tekijä SHA1 Viesti Päivämäärä
  Piotr Czajkowski 6a119f018d Better 3 kuukautta sitten
  Piotr Czajkowski 91128f7fed Not needed 3 kuukautta sitten
  Piotr Czajkowski 921b3fc336 Cleanup 3 kuukautta sitten
1 muutettua tiedostoa jossa 14 lisäystä ja 37 poistoa
  1. 14 37
      22/code.go

+ 14 - 37
22/code.go

@@ -67,52 +67,29 @@ func part1(numbers []int, iterations int) (int, [][]int) {
 	return result, allLastDigits
 }
 
-func isDesiredSequence(sequence, desiredSequence []int) bool {
-	if len(sequence) != len(desiredSequence) {
-		return false
-	}
-
-	for i := range sequence {
-		if sequence[i] != desiredSequence[i] {
-			return false
-		}
-	}
-
-	return true
-}
-
-func sequenceKey(sequence []int) string {
-	if len(sequence) != 4 {
-		return ""
-	}
-
+func sequenceKey(sequence [4]int) string {
 	return fmt.Sprintf("%d_%d_%d_%d", sequence[0], sequence[1], sequence[2], sequence[3])
 }
 
 func highestSum(allLastDigits [][]int, iterations int) int {
-	var allSequences [][]int
 	sums := make(map[string]int)
 	for _, lastDigits := range allLastDigits {
-		var sequence []int
+		sequence := [4]int{lastDigits[1] - lastDigits[0], lastDigits[2] - lastDigits[1],
+			lastDigits[3] - lastDigits[2], lastDigits[4] - lastDigits[3]}
 		checked := make(map[string]bool)
-		for i := 1; i < iterations; i++ {
-			sequence = append(sequence, lastDigits[i]-lastDigits[i-1])
-			if len(sequence) > 3 {
-				lastFour := sequence[len(sequence)-4:]
-				if lastFour[3] <= 0 {
-					continue
-				}
-
-				key := sequenceKey(lastFour)
-
-				if !checked[key] {
-					sums[key] += lastDigits[i]
-					checked[key] = true
-				}
+		for i := 5; i < iterations; i++ {
+			sequence[0], sequence[1], sequence[2] = sequence[1], sequence[2], sequence[3]
+			sequence[3] = lastDigits[i] - lastDigits[i-1]
+			if sequence[3] <= 0 {
+				continue
 			}
-		}
 
-		allSequences = append(allSequences, sequence)
+			key := sequenceKey(sequence)
+			if !checked[key] {
+				sums[key] += lastDigits[i]
+				checked[key] = true
+			}
+		}
 	}
 
 	var highest int