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]) }