Coverage for src / competitive_verifier / verify / split_state.py: 100%
14 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-05 16:00 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-05 16:00 +0000
1from typing import TypeVar
3from pydantic import BaseModel
5T = TypeVar("T")
8class SplitState(BaseModel):
9 size: int
10 index: int
12 def __str__(self) -> str:
13 return f"{self.index}/{self.size}"
15 def split(self, lst: list[T]) -> list[T]:
16 """Split list.
18 Args:
19 lst (list[T]): Target list
21 Returns:
22 list[T]: Splited list
24 Example:
25 state = SplitState(size=3, index=0)
26 assert state.split([0, 1, 2, 3, 4]) == [0]
27 state = SplitState(size=3, index=1)
28 assert state.split([0, 1, 2, 3, 4]) == [1, 2]
29 state = SplitState(size=3, index=2)
30 assert state.split([0, 1, 2, 3, 4]) == [3, 4]
31 state = SplitState(size=6, index=4)
32 assert state.split([0, 1, 2, 3, 4]) == [4]
33 state = SplitState(size=6, index=5)
34 assert state.split([0, 1, 2, 3, 4]) == []
35 """
36 if len(lst) <= self.size:
37 if len(lst) <= self.index:
38 return []
39 return [lst[self.index]]
41 from_index = len(lst) * self.index // self.size
42 to_index = len(lst) * (self.index + 1) // self.size
43 return lst[from_index:to_index]