130 lines
2.4 KiB
Go
130 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/csv"
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
func main() {
|
|
|
|
blocks := load_blocks()
|
|
fmt.Println("Total blocks:", len(blocks))
|
|
|
|
// Parse parameters
|
|
// Turn parameters into rows
|
|
row1 := "769104803"
|
|
// row2 := "154800060"
|
|
// row3 := "002700150"
|
|
// row4 := "600900308"
|
|
// row5 := "045328670"
|
|
// row6 := "328670945"
|
|
// row7 := "597410280"
|
|
// row8 := "006284090"
|
|
// row9 := "200590006"
|
|
|
|
// Find rows that fit with the entered rows
|
|
rows1 := find_blocks(blocks, row1)
|
|
// rows2 := find_blocks(blocks, row2)
|
|
// rows3 := find_blocks(blocks, row3)
|
|
// rows4 := find_blocks(blocks, row4)
|
|
// rows5 := find_blocks(blocks, row5)
|
|
// rows6 := find_blocks(blocks, row6)
|
|
// rows7 := find_blocks(blocks, row7)
|
|
// rows8 := find_blocks(blocks, row8)
|
|
// rows9 := find_blocks(blocks, row9)
|
|
|
|
fmt.Println("len(rows1):", len(rows1))
|
|
// fmt.Println(rows1)
|
|
|
|
}
|
|
|
|
func find_blocks(blocks []int, row string) []int {
|
|
// Declare selection
|
|
var selection []int
|
|
|
|
fmt.Println(row)
|
|
for letter := range row {
|
|
fmt.Println("Letter", row[letter])
|
|
//curr_number := row[letter]
|
|
for block := range blocks {
|
|
// fmt.Println(blocks[block])
|
|
curr_row := strconv.Itoa(blocks[block])
|
|
fmt.Println(curr_row[0])
|
|
//if curr_number ==
|
|
}
|
|
}
|
|
|
|
// Return selection
|
|
return selection
|
|
}
|
|
|
|
func load_blocks() []int {
|
|
var blocks []int
|
|
|
|
file, err := os.Open("blocks.csv")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer file.Close()
|
|
|
|
r := csv.NewReader(file)
|
|
for {
|
|
record, err := r.Read()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
block, _ := strconv.Atoi(record[0])
|
|
blocks = append(blocks, block)
|
|
}
|
|
|
|
return blocks
|
|
}
|
|
|
|
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
|
|
|
|
}
|
|
|
|
func 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])
|
|
}
|