Compare commits

..

No commits in common. 'd37ba3448cb75fbf6746922754aa74734a2eac1f' and '9c087ea6425277e18640910a283d1d27c93f1664' have entirely different histories.

@ -2,33 +2,38 @@ package technology.zim
import technology.zim.data.Directions
import technology.zim.data.Tile
import kotlin.time.measureTime
class HierarchicalPathfinding {
companion object {
//TODO: Run tests of World with nested ArrayList vs TileNavigatedArray
@JvmStatic
fun main(args: Array<String>) {
val n = 1000
println("Building maze")
val buildMazeTime = measureTime {
buildMaze(n)
}
var startTime = System.currentTimeMillis()
buildMaze(n)
var endTime = System.currentTimeMillis()
val buildMazeTime = endTime - startTime
println("Pathfinding")
val ArrayBackedPathfinderTime = measureTime {
ArrayBackedPathfinder.generatePath(Tile(0, 0), Tile(n - 1, (n - 1)))
}
val MapBackedPathfinderTime = measureTime {
MapBackedPathfinder.generatePath(Tile(0, 0), Tile(n - 1, (n - 1)))
}
startTime = System.currentTimeMillis()
ArrayBackedPathfinder.generatePath(Tile(0, 0), Tile(n-1, (n-1)))
endTime = System.currentTimeMillis()
val ArrayBackedPathfinderTime = endTime - startTime
//World.scrubDirections(listOf(Directions.FRONTIER, Directions.INPATH, Directions.NOPATH))
startTime = System.currentTimeMillis()
//MapBackedPathfinder.generatePath(Tile(0, 0), Tile(n-1, (n-1)))
endTime = System.currentTimeMillis()
val MapBackedPathfinderTime = endTime - startTime
println(World.toString())
println(n*n)
println("Maze build time: ${buildMazeTime.inWholeMilliseconds} ms")
println("HashMap-Backed Pathfinder time: ${MapBackedPathfinderTime.inWholeMilliseconds}ms")
println("Array-Backed Pathfinder time: ${ArrayBackedPathfinderTime.inWholeMilliseconds}ms")
println("Maze build time: ${buildMazeTime} ms")
println("HashMap-Backed Pathfinder time: ${MapBackedPathfinderTime}ms")
println("Array-Backed Pathfinder time: ${ArrayBackedPathfinderTime} ms")
}
//Clear the maze of pathfinding markers before running another pathfinding algorithm
@ -48,9 +53,6 @@ class HierarchicalPathfinding {
println(World.toString())
println(e.message)
}
}
}
}

@ -80,7 +80,7 @@ object MapBackedPathfinder {
}
current = lowestCost
}
World.update(start, start.getProperties() + Directions.HMINPATH)
World.update(start, start.getProperties() + Directions.INPATH)
}
}

@ -95,7 +95,7 @@ object World {
}
fun getTileShape(tile: TileProperties): Char {
return when(tile.connections and(UP.dir+DOWN.dir+LEFT.dir+RIGHT.dir )) {
return when(tile.connections) {
UP.dir+DOWN.dir+LEFT.dir+RIGHT.dir -> '╋'
UP.dir+DOWN.dir+LEFT.dir -> '┫'
UP.dir+DOWN.dir+RIGHT.dir -> '┣'
@ -116,7 +116,7 @@ object World {
}
fun getTileShapeDoubles(tile: TileProperties): Char {
return when(tile.connections and(UP.dir+DOWN.dir+LEFT.dir+RIGHT.dir )) {
return when(tile.connections and(MANIFEST.inv()) and(INPATH.inv()) and(FRONTIER.inv())) {
UP.dir+DOWN.dir+LEFT.dir+RIGHT.dir -> '╬'
UP.dir+DOWN.dir+LEFT.dir -> '╣'
UP.dir+DOWN.dir+RIGHT.dir -> '╠'

Loading…
Cancel
Save