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  }