| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- package solver
- import (
- "fmt"
- "strconv"
- )
- func Run() {
- solver := Solver{}
- solver.load_blocks()
- for index1 := range solver.blocks {
- for index2 := range solver.blocks {
- if solver.compare2(index1, index2) {
- for index3 := range solver.blocks {
- if solver.compare3(index1, index2, index3) {
- for index4 := range solver.blocks {
- if solver.compare4(index1, index2, index3, index4) {
- for index5 := range solver.blocks {
- if solver.compare5(index1, index2, index3, index4, index5) {
- for index6 := range solver.blocks {
- if solver.compare6(index1, index2, index3, index4, index5, index6) {
- for index7 := range solver.blocks {
- if solver.compare7(index1, index2, index3, index4, index5, index6, index7) {
- for index8 := range solver.blocks {
- if solver.compare8(index1, index2, index3, index4, index5, index6, index7, index8) {
- for index9 := range solver.blocks {
- go solver.routine_compare9(index1, index2, index3, index4, index5, index6, index7, index8, index9)
- // if solver.compare9(index1, index2, index3, index4, index5, index6, index7, index8, index9) {
- // fmt.Printf("%d:%d:%d:%d:%d:%d:%d:%d:%d\n", solver.blocks[index1], solver.blocks[index2], solver.blocks[index3], solver.blocks[index4], solver.blocks[index5], solver.blocks[index6], solver.blocks[index7], solver.blocks[index8], solver.blocks[index9])
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- func (solver *Solver) compare2(index1 int, index2 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- for index := range 9 {
- if row1[index] == row2[index] {
- retval = false
- }
- }
- return retval
- }
- func (solver *Solver) compare3(index1 int, index2 int, index3 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- row3 := strconv.Itoa(solver.blocks[index3])
- for index := range 9 {
- if row1[index] == row2[index] || row1[index] == row3[index] {
- retval = false
- }
- if row2[index] == row3[index] {
- retval = false
- }
- }
- return retval
- }
- func (solver *Solver) compare4(index1 int, index2 int, index3 int, index4 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- row3 := strconv.Itoa(solver.blocks[index3])
- row4 := strconv.Itoa(solver.blocks[index4])
- for index := range 9 {
- if row1[index] == row2[index] || row1[index] == row3[index] || row1[index] == row4[index] {
- retval = false
- }
- if row2[index] == row3[index] || row2[index] == row4[index] {
- retval = false
- }
- if row3[index] == row4[index] {
- retval = false
- }
- }
- return retval
- }
- func (solver *Solver) compare5(index1 int, index2 int, index3 int, index4 int, index5 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- row3 := strconv.Itoa(solver.blocks[index3])
- row4 := strconv.Itoa(solver.blocks[index4])
- row5 := strconv.Itoa(solver.blocks[index5])
- for index := range 9 {
- if row1[index] == row2[index] || row1[index] == row3[index] || row1[index] == row4[index] || row1[index] == row5[index] {
- retval = false
- }
- if row2[index] == row3[index] || row2[index] == row4[index] || row2[index] == row5[index] {
- retval = false
- }
- if row3[index] == row4[index] || row3[index] == row5[index] {
- retval = false
- }
- if row4[index] == row5[index] {
- retval = false
- }
- }
- return retval
- }
- func (solver *Solver) compare6(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- row3 := strconv.Itoa(solver.blocks[index3])
- row4 := strconv.Itoa(solver.blocks[index4])
- row5 := strconv.Itoa(solver.blocks[index5])
- row6 := strconv.Itoa(solver.blocks[index6])
- for index := range 9 {
- if row1[index] == row2[index] || row1[index] == row3[index] || row1[index] == row4[index] || row1[index] == row5[index] || row1[index] == row6[index] {
- retval = false
- }
- if row2[index] == row3[index] || row2[index] == row4[index] || row2[index] == row5[index] || row2[index] == row6[index] {
- retval = false
- }
- if row3[index] == row4[index] || row3[index] == row5[index] || row3[index] == row6[index] {
- retval = false
- }
- if row4[index] == row5[index] || row4[index] == row6[index] {
- retval = false
- }
- if row5[index] == row6[index] {
- retval = false
- }
- }
- return retval
- }
- func (solver *Solver) compare7(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int, index7 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- row3 := strconv.Itoa(solver.blocks[index3])
- row4 := strconv.Itoa(solver.blocks[index4])
- row5 := strconv.Itoa(solver.blocks[index5])
- row6 := strconv.Itoa(solver.blocks[index6])
- row7 := strconv.Itoa(solver.blocks[index7])
- for index := range 9 {
- if row1[index] == row2[index] || row1[index] == row3[index] || row1[index] == row4[index] || row1[index] == row5[index] || row1[index] == row6[index] || row1[index] == row7[index] {
- retval = false
- }
- if row2[index] == row3[index] || row2[index] == row4[index] || row2[index] == row5[index] || row2[index] == row6[index] || row2[index] == row7[index] {
- retval = false
- }
- if row3[index] == row4[index] || row3[index] == row5[index] || row3[index] == row6[index] || row3[index] == row7[index] {
- retval = false
- }
- if row4[index] == row5[index] || row4[index] == row6[index] || row4[index] == row7[index] {
- retval = false
- }
- if row5[index] == row6[index] || row5[index] == row7[index] {
- retval = false
- }
- if row6[index] == row7[index] {
- retval = false
- }
- }
- return retval
- }
- func (solver *Solver) compare8(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int, index7 int, index8 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- row3 := strconv.Itoa(solver.blocks[index3])
- row4 := strconv.Itoa(solver.blocks[index4])
- row5 := strconv.Itoa(solver.blocks[index5])
- row6 := strconv.Itoa(solver.blocks[index6])
- row7 := strconv.Itoa(solver.blocks[index7])
- row8 := strconv.Itoa(solver.blocks[index8])
- for index := range 9 {
- if row1[index] == row2[index] || row1[index] == row3[index] || row1[index] == row4[index] || row1[index] == row5[index] || row1[index] == row6[index] || row1[index] == row7[index] || row1[index] == row8[index] {
- retval = false
- }
- if row2[index] == row3[index] || row2[index] == row4[index] || row2[index] == row5[index] || row2[index] == row6[index] || row2[index] == row7[index] || row2[index] == row8[index] {
- retval = false
- }
- if row3[index] == row4[index] || row3[index] == row5[index] || row3[index] == row6[index] || row3[index] == row7[index] || row3[index] == row8[index] {
- retval = false
- }
- if row4[index] == row5[index] || row4[index] == row6[index] || row4[index] == row7[index] || row4[index] == row8[index] {
- retval = false
- }
- if row5[index] == row6[index] || row5[index] == row7[index] || row5[index] == row8[index] {
- retval = false
- }
- if row6[index] == row7[index] || row6[index] == row8[index] {
- retval = false
- }
- if row7[index] == row8[index] {
- retval = false
- }
- }
- return retval
- }
- func (solver *Solver) routine_compare9(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int, index7 int, index8 int, index9 int) {
- if solver.compare9(index1, index2, index3, index4, index5, index6, index7, index8, index9) {
- fmt.Printf("%d:%d:%d:%d:%d:%d:%d:%d:%d\n", solver.blocks[index1], solver.blocks[index2], solver.blocks[index3], solver.blocks[index4], solver.blocks[index5], solver.blocks[index6], solver.blocks[index7], solver.blocks[index8], solver.blocks[index9])
- }
- }
- func (solver *Solver) compare9(index1 int, index2 int, index3 int, index4 int, index5 int, index6 int, index7 int, index8 int, index9 int) bool {
- var retval bool
- retval = true
- row1 := strconv.Itoa(solver.blocks[index1])
- row2 := strconv.Itoa(solver.blocks[index2])
- row3 := strconv.Itoa(solver.blocks[index3])
- row4 := strconv.Itoa(solver.blocks[index4])
- row5 := strconv.Itoa(solver.blocks[index5])
- row6 := strconv.Itoa(solver.blocks[index6])
- row7 := strconv.Itoa(solver.blocks[index7])
- row8 := strconv.Itoa(solver.blocks[index8])
- row9 := strconv.Itoa(solver.blocks[index9])
- for index := range 9 {
- if row1[index] == row2[index] || row1[index] == row3[index] || row1[index] == row4[index] || row1[index] == row5[index] || row1[index] == row6[index] || row1[index] == row7[index] || row1[index] == row8[index] || row1[index] == row9[index] {
- retval = false
- }
- if row2[index] == row3[index] || row2[index] == row4[index] || row2[index] == row5[index] || row2[index] == row6[index] || row2[index] == row7[index] || row2[index] == row8[index] || row2[index] == row9[index] {
- retval = false
- }
- if row3[index] == row4[index] || row3[index] == row5[index] || row3[index] == row6[index] || row3[index] == row7[index] || row3[index] == row8[index] || row3[index] == row9[index] {
- retval = false
- }
- if row4[index] == row5[index] || row4[index] == row6[index] || row4[index] == row7[index] || row4[index] == row8[index] || row4[index] == row9[index] {
- retval = false
- }
- if row5[index] == row6[index] || row5[index] == row7[index] || row5[index] == row8[index] || row5[index] == row9[index] {
- retval = false
- }
- if row6[index] == row7[index] || row6[index] == row8[index] || row7[index] == row9[index] {
- retval = false
- }
- if row7[index] == row8[index] || row7[index] == row9[index] {
- retval = false
- }
- if row8[index] == row9[index] {
- retval = false
- }
- }
- return retval
- }
|