package main import ( "bufio" "fmt" "math" "os" "regexp" "strconv" "strings" ) func randomOperator(equation []int) [][]int { combinationsTotal := math.Pow(3, float64(len(equation)-2)) combinations := [][]int{} for i:=0;i0 { for j:=1;j<=prepend;j++ { combinationSSlice = append([]string{"0"}, combinationSSlice...) } } combinationISlice := []int{} for j:=range combinationSSlice { combinationInt, _ := strconv.Atoi(combinationSSlice[j]) combinationISlice = append(combinationISlice, combinationInt) } combinations = append(combinations, combinationISlice) } return combinations } func calcResult(tillnow, next, operator int) int { if operator == 0 { return tillnow + next } else if operator == 1 { return tillnow * next } else { // find number of digits digits := 0 helper := next for helper > 0 { helper = helper/10 digits++ } return tillnow*int(math.Pow(10,float64(digits)))+next } } func main() { file, _ := os.Open("test") defer file.Close() scanner := bufio.NewScanner(file) regexNumber := regexp.MustCompile(`[0-9]+`) equations := [][]int{} randomOperators := [][][]int{} // []equation []operators []operator for scanner.Scan() { line := scanner.Text() equationStrings := regexNumber.FindAllString(line, -1) equationInts := []int{} for i := range equationStrings { equationInt, _ := strconv.Atoi(equationStrings[i]) equationInts = append(equationInts, equationInt) } equations = append(equations, equationInts) randomOperators = append(randomOperators,randomOperator(equationInts)) } result := 0 for i := range equations { // for each equation for j := range randomOperators[i] { // for each random operator corresponding to the equation calculations := equations[i][1] for k:=2;k