Skip to content
This repository has been archived by the owner on Aug 29, 2019. It is now read-only.

Commit

Permalink
Heap fix
Browse files Browse the repository at this point in the history
  • Loading branch information
vishwasns99 committed Jan 21, 2019
1 parent 30e1267 commit f9a33f6
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 50 deletions.
6 changes: 4 additions & 2 deletions final_bot/heap.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

class Heap(object):
""""
Attributes:
Expand Down Expand Up @@ -40,9 +41,10 @@ def _heapify(self, element_id):
def del_min(self):
if self.is_empty():
return None
x = self.heap.pop(0)
x = self.heap[0]
if not self.is_empty():
self.heap = [self.heap[-1]] + self.heap[0:-1]
self.heap[0] = self.heap[-1]
self.heap.pop()
self._heapify (0)
return x

Expand Down
42 changes: 2 additions & 40 deletions final_bot/path_finding.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import heap

class Node():
"""A node class for A* Pathfinding"""

def __init__(self, parent=None, position=None):
self.parent = parent
Expand All @@ -18,7 +17,6 @@ def compare(parent, child):
return parent.f <= child.f

def astar(maze, start, end):
"""Returns a list of tuples as a path from the given start to the given end in the given maze"""

# Create start and end node
start_node = Node(None, start)
Expand All @@ -31,7 +29,6 @@ def astar(maze, start, end):
closed_list = [[0 for i in range(len(maze))] for i in range(len(maze))]
open_list = [[0 for i in range(len(maze))] for i in range(len(maze))]


# Add the start node
open_heap.add(start_node)
x,y = start_node.position
Expand All @@ -41,10 +38,9 @@ def astar(maze, start, end):
while not open_heap.is_empty():

# Get the current node
current_node = open_heap.min()

# Pop current off open list, add to closed list
open_heap.del_min()
current_node = open_heap.del_min()
x,y = current_node.position
closed_list[x][y] = 1
open_list[x][y] = 0
Expand Down Expand Up @@ -99,39 +95,5 @@ def astar(maze, start, end):
# Add the child to the open list
open_heap.add(child)
x,y = child.position
open_list[x][y] = 1


def main():
m = [
[True, True, True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True, True, True],
[True, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, True],
[True, False, False, False, False, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, False, False, False, False, True],
[True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True],
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True],
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True],
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True],
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, True, True], [True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True], [True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True], [True, False, False, True, False, False, False, False, False, True, True, True, False, True, True, True, True, True, True, False, True, True, True, False, False, False, False, False, True, False, False, True], [True, True, True, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, True, True, True], [True, True, True, True, True, True, True, False, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, False, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, False, False, False, False, False, False, True, True, True, True, False, False, False, False, False, False, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, False, False, False, True, True, True, True, True, True, False, False, False, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, True], [True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True], [True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True], [True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]]

start = (12,24)
end = (13, 26)
maze = [[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0]]

#start = (0, 4)
#end = (8, 4)

path = astar(m, start, end)
print(path)


if __name__ == '__main__':
main()
open_list[x][y] = 1
15 changes: 7 additions & 8 deletions final_bot/robot.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
from battlecode import BCAbstractRobot, SPECS
import battlecode as bc
import random
#import path_finding
import path_finding

__pragma__('iconv')
__pragma__('tconv')
__pragma__('opov')
#__pragma__('opov')


# don't try to use global variables!!
Expand Down Expand Up @@ -75,13 +75,11 @@ def is_adjacent(self, r): # Returns true if 'r' object is adjacent to 'self' ob
return False

def turn(self):
pass
'''
attackable = []
passable_map = self.get_passable_map()
karbonite_map = self.get_karbonite_map()
visible_map = self.get_visible_robot_map()
#fuel_map = self.get_fuel_map()
fuel_map = self.get_fuel_map()
visible_robots = self.get_visible_robots()

if self.spawnloc is None:
Expand All @@ -99,6 +97,7 @@ def turn(self):
return self.give(r.x - self.me.x, r.y - self.me.y, self.me.karbonite, self.me.fuel)

if self.me['unit'] == SPECS['CASTLE']:

self.log("Castle")
for dx, dy in self.surrounding_tiles:
x = self.me.x+dx
Expand Down Expand Up @@ -135,10 +134,10 @@ def turn(self):
return move

elif self.me['unit'] == SPECS["CRUSADER"]:
self.log("Crusader" + str(self.me.turn))
self.log("Crusader")
if attackable:
r = attackable[0]
self.log('attacking! ' + str(r) + ' at loc ' +
self.log('attacking! ' + ' at loc ' +
(r.x - self.me.x, r.y - self.me.y))
return self.attack(r.x - self.me.x, r.y - self.me.y)

Expand All @@ -150,5 +149,5 @@ def turn(self):
move = self.move_to(*self.destination, passable_map, visible_map)
if(move is not None):
return move
'''

robot = MyRobot()
Binary file modified replay.bc19
Binary file not shown.

0 comments on commit f9a33f6

Please sign in to comment.