github.com/joshprzybyszewski/masyu@v0.0.0-20230508015604-f31a025f6e7e/solve/nodes.go (about) 1 package solve 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/joshprzybyszewski/masyu/model" 8 ) 9 10 func FromNodes( 11 size model.Size, 12 ns []model.Node, 13 ) (model.Solution, error) { 14 return FromNodesWithTimeout( 15 size, 16 ns, 17 maxAttemptDuration, 18 ) 19 } 20 21 func FromNodesWithTimeout( 22 size model.Size, 23 ns []model.Node, 24 dur time.Duration, 25 ) (model.Solution, error) { 26 27 s := newState(size, ns) 28 29 ss := settle(&s) 30 if ss == solved { 31 return s.toSolution(), nil 32 } else if ss == invalid { 33 fmt.Printf("%s\n", &s) 34 panic(`bad initialization`) 35 } 36 37 return solveWithWorkforce( 38 &s, 39 dur, 40 ) 41 }