Browse Source

Preparing for part2

Piotr Czajkowski 1 year ago
parent
commit
562bb54d26
1 changed files with 14 additions and 12 deletions
  1. 14 12
      20/code.go

+ 14 - 12
20/code.go

@@ -80,28 +80,30 @@ func addAt(numbers []entry, value entry, index int) []entry {
 	return append(temp, numbers[index:]...)
 }
 
-func mix(numbers []entry) []entry {
+func mix(numbers []entry, times int) []entry {
 	size := len(numbers)
 	edge := size - 1
 	mixed := make([]entry, size)
 	copy(mixed, numbers)
 
-	for i := range numbers {
-		if numbers[i].value == 0 {
-			continue
-		}
+	for t := 0; t < times; t++ {
+		for i := range numbers {
+			if numbers[i].value == 0 {
+				continue
+			}
 
-		currentIndex := indexOf(mixed, numbers[i].id)
-		newIndex := establishNewIndex(edge, currentIndex, numbers[i].value)
+			currentIndex := indexOf(mixed, numbers[i].id)
+			newIndex := establishNewIndex(edge, currentIndex, numbers[i].value)
 
-		mixed = removeAt(mixed, currentIndex)
-		mixed = addAt(mixed, numbers[i], newIndex)
+			mixed = removeAt(mixed, currentIndex)
+			mixed = addAt(mixed, numbers[i], newIndex)
+		}
 	}
 
 	return mixed
 }
 
-func part1(mixed []entry) int {
+func calculate(mixed []entry) int {
 	zeroIndex := indexOf(mixed, -1)
 	result := 0
 	size := len(mixed)
@@ -127,6 +129,6 @@ func main() {
 	}
 
 	numbers := readInput(file)
-	mixed := mix(numbers)
-	fmt.Println("Part1:", part1(mixed))
+	mixed1 := mix(numbers, 1)
+	fmt.Println("Part1:", calculate(mixed1))
 }