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