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__