Changed several implementation details and added depth-first-search

This commit is contained in:
Niklas Birk
2019-03-27 19:59:28 +01:00
parent 481b292d17
commit 82e7e618d7
10 changed files with 216 additions and 78 deletions

View File

@ -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
{

View 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");
}
}

View File

@ -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);
}
}

View 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);
// }
}