Changed several implementation details and added depth-first-search
This commit is contained in:
@ -1,7 +1,8 @@
|
||||
package search.breadthfirstsearch;
|
||||
package search;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import search.EightPuzzleNode;
|
||||
|
||||
class EightPuzzleNodeTest
|
||||
{
|
20
test/search/SearchTestUtils.java
Normal file
20
test/search/SearchTestUtils.java
Normal file
@ -0,0 +1,20 @@
|
||||
package search;
|
||||
|
||||
public class SearchTestUtils
|
||||
{
|
||||
public static <T> void printSolution(Node<T> targetNode)
|
||||
{
|
||||
var node = targetNode;
|
||||
|
||||
System.out.println("Read from down to top!");
|
||||
System.out.println("END");
|
||||
|
||||
while (node != null)
|
||||
{
|
||||
System.out.println(node);
|
||||
node = node.getParent();
|
||||
}
|
||||
|
||||
System.out.println("START");
|
||||
}
|
||||
}
|
@ -1,10 +1,12 @@
|
||||
package search.breadthfirstsearch;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import search.EightPuzzleNode;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static search.SearchTestUtils.printSolution;
|
||||
|
||||
class BreadthFirstSearchTest
|
||||
{
|
||||
@Test
|
||||
@ -26,12 +28,28 @@ class BreadthFirstSearchTest
|
||||
|
||||
var actual = new BreadthFirstSearch().breadthFirstSearch(List.of(root), expected);
|
||||
|
||||
System.out.println("Target: " + Arrays.deepToString(targetState));
|
||||
System.out.println("Actual:\n" + actual);
|
||||
printSolution(actual);
|
||||
}
|
||||
|
||||
private void printSolution(Node<int[][]> targetNode)
|
||||
@Test
|
||||
void shouldReturnCorrectTargetChubekNode()
|
||||
{
|
||||
int[][] state = {
|
||||
{2, 0, 4},
|
||||
{6, 7, 1},
|
||||
{8, 5, 3}
|
||||
};
|
||||
var root = new EightPuzzleNode(state);
|
||||
|
||||
int[][] targetState = {
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 0}
|
||||
};
|
||||
var expected = new EightPuzzleNode(targetState);
|
||||
|
||||
var actual = new BreadthFirstSearch().breadthFirstSearch(List.of(root), expected);
|
||||
|
||||
printSolution(actual);
|
||||
}
|
||||
}
|
56
test/search/depthfirstsearch/DepthFirstSearchTest.java
Normal file
56
test/search/depthfirstsearch/DepthFirstSearchTest.java
Normal file
@ -0,0 +1,56 @@
|
||||
package search.depthfirstsearch;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import search.EightPuzzleNode;
|
||||
import search.breadthfirstsearch.BreadthFirstSearch;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static search.SearchTestUtils.printSolution;
|
||||
|
||||
class DepthFirstSearchTest
|
||||
{
|
||||
@Test
|
||||
void shouldReturnCorrectTarget()
|
||||
{
|
||||
int[][] state = {
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 0, 8}
|
||||
};
|
||||
var root = new EightPuzzleNode(state);
|
||||
|
||||
int[][] targetState = {
|
||||
{1, 2, 3},
|
||||
{4, 5, 6},
|
||||
{7, 8, 0}
|
||||
};
|
||||
var expected = new EightPuzzleNode(targetState);
|
||||
|
||||
var actual = new DepthFirstSearch().depthFirstSearch(root, expected);
|
||||
|
||||
printSolution(actual);
|
||||
}
|
||||
|
||||
// @Test
|
||||
// void shouldReturnCorrectTargetChubekNode()
|
||||
// {
|
||||
// int[][] state = {
|
||||
// {2, 0, 4},
|
||||
// {6, 7, 1},
|
||||
// {8, 5, 3}
|
||||
// };
|
||||
// var root = new EightPuzzleNode(state);
|
||||
//
|
||||
// int[][] targetState = {
|
||||
// {1, 2, 3},
|
||||
// {4, 5, 6},
|
||||
// {7, 8, 0}
|
||||
// };
|
||||
// var expected = new EightPuzzleNode(targetState);
|
||||
//
|
||||
// var actual = new DepthFirstSearch().depthFirstSearch(root, expected);
|
||||
//
|
||||
// printSolution(actual);
|
||||
// }
|
||||
}
|
Reference in New Issue
Block a user