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