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 }