Tested DFS direction assisted search.
This commit is contained in:
parent
ed48e164b6
commit
4ed9d4d272
@ -14,6 +14,8 @@ public class DepthFirstSearch {
|
||||
private Node endNode;
|
||||
private HashSet<Node> checkedNodes;
|
||||
private int maxNodesSearched = -1;
|
||||
private int foundX;
|
||||
private int foundY;
|
||||
|
||||
public DepthFirstSearch() {
|
||||
checkedNodes = new HashSet<>();
|
||||
@ -43,16 +45,16 @@ public class DepthFirstSearch {
|
||||
startNode = new Node(null, x, y);
|
||||
}
|
||||
|
||||
public void setEndPosition(int x, int y) {
|
||||
public void setDirectionPosition(int x, int y) {
|
||||
endNode = new Node(null, x, y);
|
||||
}
|
||||
|
||||
public int getEndX() {
|
||||
return endNode.x;
|
||||
return foundX;
|
||||
}
|
||||
|
||||
public int getEndY() {
|
||||
return endNode.y;
|
||||
return foundY;
|
||||
}
|
||||
|
||||
public void deleteTree() {
|
||||
@ -118,7 +120,8 @@ public class DepthFirstSearch {
|
||||
n.child[2] = new Node(n, n.x, n.y + 1);
|
||||
n.child[3] = new Node(n, n.x, n.y - 1);
|
||||
} else {
|
||||
endNode = n;
|
||||
foundX = n.x;
|
||||
foundY = n.y;
|
||||
return true;
|
||||
}
|
||||
if (checkedNodes.add(n)) {
|
||||
@ -133,6 +136,9 @@ public class DepthFirstSearch {
|
||||
return false;
|
||||
}
|
||||
|
||||
public int getSearchedCount() {
|
||||
return checkedNodes.size();
|
||||
}
|
||||
private class Node implements Comparable<Node> {
|
||||
public Node[] child;
|
||||
public Node parent;
|
||||
|
@ -99,7 +99,7 @@ public class DepthFirstSearchTest {
|
||||
{
|
||||
dfs.setValidatable(new Validator(mapA));
|
||||
dfs.setStartPosition(1, 2);
|
||||
dfs.setEndPosition(1, 0);
|
||||
dfs.setDirectionPosition(1, 0);
|
||||
assertTrue(dfs.buildPathToEndNode());
|
||||
}
|
||||
|
||||
@ -108,7 +108,7 @@ public class DepthFirstSearchTest {
|
||||
{
|
||||
dfs.setValidatable(new Validator(mapB));
|
||||
dfs.setStartPosition(3, 0);
|
||||
dfs.setEndPosition(3, 2);
|
||||
dfs.setDirectionPosition(3, 2);
|
||||
assertTrue(dfs.buildPathToEndNode());
|
||||
}
|
||||
|
||||
@ -117,7 +117,7 @@ public class DepthFirstSearchTest {
|
||||
{
|
||||
dfs.setValidatable(new Validator(mapD));
|
||||
dfs.setStartPosition(0, 0);
|
||||
dfs.setEndPosition(0, 3);
|
||||
dfs.setDirectionPosition(0, 3);
|
||||
assertTrue(dfs.buildPathToEndNode());
|
||||
}
|
||||
|
||||
@ -126,7 +126,7 @@ public class DepthFirstSearchTest {
|
||||
{
|
||||
dfs.setValidatable(new Validator(mapC));
|
||||
dfs.setStartPosition(3, 0);
|
||||
dfs.setEndPosition(3, 2);
|
||||
dfs.setDirectionPosition(3, 2);
|
||||
assertFalse(dfs.buildPathToEndNode());
|
||||
}
|
||||
|
||||
@ -135,7 +135,7 @@ public class DepthFirstSearchTest {
|
||||
{
|
||||
dfs.setValidatable(new Validator(mapE));
|
||||
dfs.setStartPosition(3, 0);
|
||||
dfs.setEndPosition(3, 2);
|
||||
dfs.setDirectionPosition(3, 2);
|
||||
assertFalse(dfs.buildPathToEndNode());
|
||||
}
|
||||
|
||||
@ -211,4 +211,16 @@ public class DepthFirstSearchTest {
|
||||
|
||||
assertFalse(dfs.findTarget(validator));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDFSFindEndNodeMapHWithAssistValid() {
|
||||
Validator validator = new Validator(mapH);
|
||||
dfs.setValidatable(validator);
|
||||
dfs.setStartPosition(3, 0);
|
||||
dfs.setDirectionPosition(42, 84);
|
||||
|
||||
assertTrue(dfs.findTarget(validator));
|
||||
assertEquals(95, dfs.getEndX());
|
||||
assertEquals(49, dfs.getEndY());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user