github.com/joshprzybyszewski/masyu@v0.0.0-20230508015604-f31a025f6e7e/solve/node_utils.go (about)

     1  package solve
     2  
     3  import (
     4  	"github.com/joshprzybyszewski/masyu/model"
     5  )
     6  
     7  func isBlackNodeClear(
     8  	s *state,
     9  	n model.Node,
    10  ) bool {
    11  
    12  	if !n.IsBlack {
    13  		return false
    14  	}
    15  
    16  	if n.Row < 2 || n.Col < 2 {
    17  		return false
    18  	}
    19  
    20  	if n.Row >= model.Dimension(s.size)-1 || n.Col >= model.Dimension(s.size)-1 {
    21  		return false
    22  	}
    23  
    24  	if s.hasHorDefined(n.Row, n.Col-2) {
    25  		return false
    26  	}
    27  	if s.hasHorDefined(n.Row, n.Col-1) {
    28  		return false
    29  	}
    30  	if s.hasHorDefined(n.Row, n.Col) {
    31  		return false
    32  	}
    33  	if s.hasHorDefined(n.Row, n.Col+1) {
    34  		return false
    35  	}
    36  
    37  	if s.hasVerDefined(n.Row-2, n.Col) {
    38  		return false
    39  	}
    40  	if s.hasVerDefined(n.Row-1, n.Col) {
    41  		return false
    42  	}
    43  	if s.hasVerDefined(n.Row, n.Col) {
    44  		return false
    45  	}
    46  	if s.hasVerDefined(n.Row+1, n.Col) {
    47  		return false
    48  	}
    49  
    50  	return true
    51  }
    52  
    53  func isWhiteNodeClear(
    54  	s *state,
    55  	n model.Node,
    56  ) bool {
    57  
    58  	if n.IsBlack {
    59  		return false
    60  	}
    61  
    62  	if n.Row < 2 || n.Col < 2 {
    63  		return false
    64  	}
    65  
    66  	if n.Row >= model.Dimension(s.size)-1 || n.Col >= model.Dimension(s.size)-1 {
    67  		return false
    68  	}
    69  
    70  	if s.hasVerDefined(n.Row-1, n.Col-1) {
    71  		return false
    72  	}
    73  	if s.hasVerDefined(n.Row, n.Col-1) {
    74  		return false
    75  	}
    76  	if s.hasHorDefined(n.Row, n.Col-1) {
    77  		return false
    78  	}
    79  	if s.hasHorDefined(n.Row, n.Col) {
    80  		return false
    81  	}
    82  	if s.hasVerDefined(n.Row-1, n.Col+1) {
    83  		return false
    84  	}
    85  	if s.hasVerDefined(n.Row, n.Col+1) {
    86  		return false
    87  	}
    88  
    89  	if s.hasHorDefined(n.Row-1, n.Col-1) {
    90  		return false
    91  	}
    92  	if s.hasHorDefined(n.Row-1, n.Col) {
    93  		return false
    94  	}
    95  	if s.hasVerDefined(n.Row-1, n.Col) {
    96  		return false
    97  	}
    98  	if s.hasVerDefined(n.Row, n.Col) {
    99  		return false
   100  	}
   101  	if s.hasHorDefined(n.Row+1, n.Col-1) {
   102  		return false
   103  	}
   104  	if s.hasHorDefined(n.Row+1, n.Col) {
   105  		return false
   106  	}
   107  
   108  	return true
   109  }