first commit

This commit is contained in:
Tomas Dvorak
2026-04-13 17:46:58 +02:00
commit 6e8fedf534
234 changed files with 53808 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
from typing import TypeVar
T = TypeVar("T")
def use_bisection(
source: list[T], key: str, queries: list[str], limit: int = -1
) -> list[T | None]:
"""
Uses bisection to find a list of items in another list.
Returns a list of found items with `None` items being not found items.
"""
def find(query: str):
left = 0
right = len(source) - 1
while left <= right:
mid = (left + right) // 2
if source[mid].__getattribute__(key) == query:
return source[mid]
elif source[mid].__getattribute__(key) > query:
right = mid - 1
else:
left = mid + 1
return None
if len(source) == 0:
return []
results = []
for query in queries:
res = find(query)
if res is None:
continue
results.append(res)
if limit != -1 and len(results) >= limit:
break
return results