precomputed rotated matrix in Matrix class
This commit is contained in:
parent
bb4eac6e1b
commit
3688946a24
1 changed files with 6 additions and 1 deletions
|
@ -40,9 +40,13 @@ class Matrix:
|
|||
self.height = len(lines)
|
||||
self.width = len(lines[0])
|
||||
self.array = array("u")
|
||||
self.array_rot = array("u")
|
||||
for line in lines:
|
||||
self.array.fromlist(list(line))
|
||||
|
||||
for line in zip(*lines):
|
||||
self.array_rot.fromlist(list(line))
|
||||
|
||||
def __getitem__(self, pos: Position | tuple[int, int]) -> str:
|
||||
return self.array[self.width * pos[1] + pos[0]]
|
||||
|
||||
|
@ -56,7 +60,8 @@ class Matrix:
|
|||
return (self.get_row(y) for y in range(self.height))
|
||||
|
||||
def get_col(self, col_no: int) -> array[str]:
|
||||
return array("u", [self[col_no, y] for y in range(self.height)])
|
||||
return self.array_rot[self.height * col_no : self.width * (col_no + 1)]
|
||||
# return array("u", [self[col_no, y] for y in range(self.height)])
|
||||
|
||||
def iter_cols(self) -> Iterable[array[str]]:
|
||||
return (self.get_col(x) for x in range(self.width))
|
||||
|
|
Loading…
Add table
Reference in a new issue