Source code for titan_pylib.data_structures.array.array_2D

 1from typing import TypeVar, Generic
 2
 3T = TypeVar("T")
 4
 5
[docs] 6class Array2D(Generic[T]): 7 8 def __init__(self, n: int, m: int, val: T) -> None: 9 self.n: int = n 10 self.m: int = m 11 self.val: T = val 12 self.a: list[T] = [val for _ in range(n * m)] 13
[docs] 14 def set(self, i: int, j: int, val: T) -> None: 15 assert ( 16 0 <= i < self.n and 0 <= j < self.m 17 ), f"IndexError: {self.__class__.__name__}.set({i}, {j}, {val})" 18 self.a[i * self.m + j] = val
19
[docs] 20 def get(self, i: int, j: int) -> T: 21 assert ( 22 0 <= i < self.n and 0 <= j < self.m 23 ), f"IndexError: {self.__class__.__name__}.get({i}, {j})" 24 return self.a[i * self.m + j]
25
[docs] 26 def tolist(self) -> list[list[T]]: 27 a = [[self.val] * self.m for _ in range(self.n)] 28 for i in range(self.n): 29 for j in range(self.m): 30 a[i][j] = self.get(i, j) 31 return a
32 33 def __str__(self) -> str: 34 return str(self.tolist()) 35 36 __repr__ = __str__