caugrid.py
author Eugen Sawin <sawine@me73.com>
Thu, 30 Dec 2010 18:31:19 +0100
changeset 7 95ea605276a3
parent 3 89d76549ba6e
permissions -rw-r--r--
Moved cau to cau.
     1 class Grid(object):
     2 
     3 	def __init__(self):
     4 		self.cells = {}
     5 		self.valuemap = {}
     6 		self.minx = 0
     7 		self.maxx = 0
     8 		self.miny = 0
     9 		self.maxy = 0
    10 
    11 	def set(self, pos, value=1):
    12 		if pos in self.cells and value != self.cells[pos]:
    13 			self.clear(pos)
    14 		if not pos in self.cells:
    15 			self.cells[pos] = value
    16 			if value in self.valuemap:
    17 				self.valuemap[value].append(pos)
    18 			else:
    19 				self.valuemap[value] = [pos]
    20 			self.update(pos)
    21 		return self
    22 
    23 	def clear(self, pos):
    24 		if pos in self.cells: 
    25 			self.valuemap[self.cells[pos]].remove(pos)
    26 			del self.cells[pos]
    27 			self.update(pos)
    28 		return self
    29 
    30 	def update(self, (x, y)):
    31 		self.minx = min(x, self.minx)
    32 		self.maxx = max(x, self.maxx)
    33 		self.miny = min(y, self.miny)
    34 		self.maxy = max(y, self.maxy)
    35 		return self
    36 
    37 	def width(self):
    38 		return self.maxx - self.minx + 1
    39 
    40 	def height(self):
    41 		return self.maxy - self.miny + 1
    42 
    43 	def __len__(self):
    44 		return len(self.cells)
    45 
    46 	def __str__(self):
    47 		pass