// Processing func (solver *Solver) routine_row1(index1 int) { for index2 := range solver.row2s { go solver.routine_row2(index1, index2) } } func (solver *Solver) routine_row2(index1 int, index2 int) { for index3 := range solver.row3s { go solver.routine_row3(index1, index2, index3) } } func (solver *Solver) routine_row3(index1 int, index2 int, index3 int) { for index4 := range solver.row4s { go solver.routine_row4(index1, index2, index3, index4) } } func (solver *Solver) routine_row4(index1 int, index2 int, index3 int, index4 int) { for index5 := range solver.row5s { go solver.routine_row5(index1, index2, index3, index4, index5) } } func (solver *Solver) routine_row5(index1 int, index2 int, index3 int, index4 int, index5 int) { for index6 := range solver.row6s { go solver.routine_row6(index1, index2, index3, index4, index5, index6) } } func (solver *Solver) routine_row6(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int) { for index7 := range solver.row7s { go solver.routine_row7(index1, index2, index3, index4, index5, index6, index7) } } func (solver *Solver) routine_row7(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int, index7 int) { for index8 := range solver.row8s { go solver.routine_row8(index1, index2, index3, index4, index5, index6, index7, index8) } } func (solver *Solver) routine_row8(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int, index7 int, index8 int) { for index9 := range solver.row9s { go solver.routine_row9(index1, index2, index3, index4, index5, index6, index7, index8, index9) } } func (solver *Solver) routine_row9(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int, index7 int, index8 int, index9 int) { go solver.routine_validator(index1, index2, index3, index4, index5, index6, index7, index8, index9) } // blocks.go func (solver *Solver) generate_blocks() []int { var blocks []int decvals := [9]int{49, 50, 51, 52, 53, 54, 55, 56, 57} for counter := 123456789; counter <= 987654321; counter++ { // Convert number to string ([]byte) digits := strconv.Itoa(counter) // Check if every number is only represented only once var valid bool valid = true for decval := range decvals { var count int for digit := range digits { if digits[digit] == byte(decvals[decval]) { count = count + 1 } } if count != 1 { valid = false } } if valid { blocks = append(blocks, counter) } } return blocks } // stash.go func (solver *Solver) print_block(block int) { digits := strconv.Itoa(block) fmt.Printf("%c %c %c\n%c %c %c\n%c %c %c\n\n", digits[0], digits[1], digits[2], digits[3], digits[4], digits[5], digits[6], digits[7], digits[8]) }