diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index 1d38094..7883995 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -25,18 +25,18 @@ class HierarchicalPathfinding { 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))) } - */ + 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("BFS Pathfinder time: ${BFSPathFinderTime.inWholeMilliseconds}ms") + println("Array-Backed Pathfinder time: ${ArrayBackedPathfinderTime.inWholeMilliseconds}ms") + println("HashMap-Backed Pathfinder time: ${MapBackedPathfinderTime.inWholeMilliseconds}ms") } //Clear the maze of pathfinding markers before running another pathfinding algorithm diff --git a/src/main/kotlin/MazeFinder.kt b/src/main/kotlin/MazeFinder.kt index 1f1060a..f8984d2 100644 --- a/src/main/kotlin/MazeFinder.kt +++ b/src/main/kotlin/MazeFinder.kt @@ -39,7 +39,7 @@ object MazeFinder { var current: Tile var inGraph: Tile - var adjacentExplored: Set + var adjacentExplored: ArrayList while(frontier.isNotEmpty()) { //Grab a random tile from the frontier val random = randGen.nextInt(frontier.size) diff --git a/src/main/kotlin/data/Tile.kt b/src/main/kotlin/data/Tile.kt index b46dce9..77c0689 100644 --- a/src/main/kotlin/data/Tile.kt +++ b/src/main/kotlin/data/Tile.kt @@ -43,8 +43,8 @@ value class Tile(private val value: ULong) { } //Get adjacent tiles for Prim's Algorithm - fun getAdjacentTiles(explored:Boolean): Set { - val adj = mutableSetOf() + fun getAdjacentTiles(explored:Boolean): ArrayList { + val adj = arrayListOf() val dirs = Directions.ALL dirs.forEach { dir -> @@ -115,8 +115,8 @@ value class Tile(private val value: ULong) { } //Get connections for pathfinding algorithms - fun getConnections(): Set { - val connections = mutableSetOf() + fun getConnections(): ArrayList { + val connections = arrayListOf() val properties = getProperties() if(properties.connections and(Directions.UP.dir) != 0) { connections.add(this + Directions.NORTH) diff --git a/src/main/kotlin/data/TileHeap.kt b/src/main/kotlin/data/TileHeap.kt index 36b4e26..3eb4dcb 100644 --- a/src/main/kotlin/data/TileHeap.kt +++ b/src/main/kotlin/data/TileHeap.kt @@ -68,8 +68,10 @@ class TileHeap(val end: Tile, val fValue:(Tile, Tile) -> Int) { private fun leftChild(index: Int): Int = index * 2 private fun rightChild(index: Int): Int = (index * 2) + 1 + //Instead of allocating the memory every time, do it once. + var index1tmp:Tile = Tile(0, 0) private fun swap(index1: Int, index2: Int) { - val index1tmp = dat[index1] + index1tmp = dat[index1] dat[index1] = dat[index2] dat[index2] = index1tmp }