sudoku-funpark/main.go

75 lines
1.1 KiB
Go

package main
import (
"fmt"
"strconv"
)
func main() {
blocks := generate_blocks()
fmt.Println(len(blocks))
fmt.Println(blocks[0])
}
func 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
}
// counter: 123456789
// 1st Digit: 1 (49)
// 2nd Digit: 2 (50)
// 3rd Digit: 3 (51)
// 4th Digit: 4 (52)
// 5th Digit: 5 (53)
// 6th Digit: 6 (54)
// 7th Digit: 7 (55)
// 8th Digit: 8 (56)
// 9th Digit: 9 (57)
// 362880
// 1 2 3
// 4 5 6
// 7 8 9
// 1: 1 2 3 4 7
// 2: 1 2 3 5 8
// 3: 1 2 3 6 9
// 4: 1 4 5 6 7
// 5: 2 4 5 6 8
// 6: 3 4 5 6 9
// 7: 1 4 7 8 9
// 8: 2 5 7 8 9
// 9: 3 6 7 8 9