diff --git a/src/main/kotlin/ArrayBackedPathfinder.kt b/src/main/kotlin/ArrayBackedPathfinder.kt index 487876c..fe91869 100644 --- a/src/main/kotlin/ArrayBackedPathfinder.kt +++ b/src/main/kotlin/ArrayBackedPathfinder.kt @@ -14,10 +14,10 @@ import kotlin.math.abs object ArrayBackedPathfinder { var gVals = TileNavigatedArray(World.sizeX, World.sizeY, false) + var pathLength = 0 //work along the path, marking tiles with VISITED along the way //if marking with visited is too expensive, just make the path and finalize it fun generatePath(start: Tile, end: Tile) { - if(!start.isInBounds() || !end.isInBounds()) { throw IndexOutOfBoundsException("Cannot generate a path to or from an out of bounds tile") } @@ -26,6 +26,8 @@ object ArrayBackedPathfinder { println("Ouroboros detected") return } + + pathLength = 0 gVals = TileNavigatedArray(World.sizeX, World.sizeY, false) val frontier = TileHeap(end, this::fValue) @@ -74,6 +76,7 @@ object ArrayBackedPathfinder { } } current = lowestCost + pathLength++ } World.update(start, start.getProperties() + Directions.INPATH) } diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index cf8db8c..2549552 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -2,8 +2,6 @@ package technology.zim import technology.zim.data.Tile import java.io.File -import java.text.NumberFormat -import java.util.Locale import kotlin.time.measureTime class HierarchicalPathfinding { @@ -26,7 +24,7 @@ class HierarchicalPathfinding { val ns = arrayListOf(50, 100, 250, 500, 750, 1000) val iterations = 10 val file = File("performance.csv") - file.writeText("n, build, bfs, astar-array, astar-hashmap\n") + file.writeText("n,path-length,build,bfs,astar-array,astar-hashmap\n") if(benchmarking) { for (n in ns) { @@ -70,7 +68,7 @@ class HierarchicalPathfinding { var mapBackedPathfinderTime = measureTime { MapBackedPathfinder.generatePath(Tile(0, 0), Tile(n - 1, n - 1)) } - file.appendText("${n},${buildMazeTime.inWholeMilliseconds},${bfsPathfinderTime.inWholeMilliseconds},${arrayBackedPathfinderTime.inWholeMilliseconds},${mapBackedPathfinderTime.inWholeMilliseconds}\n") + file.appendText("${n},${buildMazeTime.inWholeMilliseconds},${ArrayBackedPathfinder.pathLength},${bfsPathfinderTime.inWholeMilliseconds},${arrayBackedPathfinderTime.inWholeMilliseconds},${mapBackedPathfinderTime.inWholeMilliseconds}\n") }