package main import ( "bufio" "fmt" "os" "regexp" "strconv" ) func calcScore(s [][]string) int { result := 0 for i := range s { if len(s[i]) % 2 == 0 { fmt.Println("The following valid update has an even length, so cannot calculate the middle page: ", s[i]) } else { middle := (len(s[i]) + 1) / 2 middlePage, _ := strconv.Atoi(s[i][middle - 1]) result = result + middlePage } } return result } func isValid(update []string, rules [][]string) bool { valid := true for i:=1; i 0 { rules = append(rules, rule) } if len(update) > 0 { updates = append(updates, update) } } validUpdates := [][]string{} invalidUpdates := [][]string{} for i := range updates { if isValid(updates[i], rules) { validUpdates = append(validUpdates, updates[i]) } else { valid:=makeValid(updates[i], rules) invalidUpdates = append(invalidUpdates, valid) } } validScore := calcScore(validUpdates) fmt.Println("Score of valid updates: ", validScore) invalidScore := calcScore(invalidUpdates) fmt.Println(invalidScore) }