zamotivator

Untitled

May 8th, 2012
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. class Coord:
  2. def __init__(self, array, coord, check= True):
  3. self._array= array
  4. self._list= coord
  5. assert(len(self) == len(self.array.dimension_list()))
  6. assert(check and array.min() <= self)
  7. assert(check and self < array.max())
  8.  
  9. def __len__(self):
  10. return len(self._list)
  11.  
  12. def __str__(self):
  13. return ','.join(map(str, self._list))
  14.  
  15. def __iter__(self):
  16. return iter(self._list)
  17.  
  18. def __lt__(self, right):
  19. return all([left < right for (left, right) in zip(self._coord, right._coord)])
  20.  
  21. def __le__(self, right):
  22. return all([left <= right for (left, right) in zip(self._coord, right._coord)])
  23.  
  24. def __eq__(self, right):
  25. return all([left == right for (left, right) in zip(self._coord, right._coord)])
  26.  
  27. def __gt__(self, right):
  28. return all([left > right for (left, right) in zip(self._coord, right._coord)])
  29.  
  30. def __ge__(self, right):
  31. return all([left >= right for (left, right) in zip(self._coord, right._coord)])
  32.  
  33. def __add__(self, right):
  34. return Coord(self._array, [ (left + right) for (left,right) in zip(self._coord, right.coord) ])
  35.  
  36. def __sub__(self, right):
  37. return Coord(self._array, [ (left - right) for (left,right) in zip(self._coord, right.coord) ])
  38.  
  39. class Value:
  40. def __init__(self, array, attribute_value_list):
  41. self._list= attribute_value_list
  42. assert(len(array.attribute_list()) == len(attribute_value_list))
  43.  
  44. def __str__(self):
  45. return ','.join(map(str, self._list))
  46.  
  47.  
  48. class Box:
  49. def __init__(self, array, begin, end):
  50. self._begin= begin
  51. self._end= end
  52. assert(begin < end)
  53.  
  54. def begin(self):
  55. return self._begin
  56.  
  57. def end(self):
  58. return self._end
  59.  
  60. def include(self, coord):
  61. return self._begin <= coord and coord < self._end
  62.  
  63. def __len__(self):
  64. return self.end() - self.begin()
  65.  
  66. def __iter__(self):
  67. return itertools.iproduct(xrange(minimum, maximum - minimum) for (minimum, maximum) itertools.izip(self.begin(), self.end()))
Advertisement
Add Comment
Please, Sign In to add comment