75 lines
1.1 KiB
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
|