Initial code version

This commit is contained in:
Гершман Антон Лейбович 2026-07-27 15:27:30 +03:00
parent 59ebddc6ce
commit cb801cc8a7
4 changed files with 50 additions and 0 deletions

0
pyproject.toml Normal file
View File

View File

@ -0,0 +1,2 @@
__version__ = '1.0.0'
__author__ = 'Urbrato'

View File

@ -0,0 +1,42 @@
from collections import deque
from collections.abc import Callable, Hashable, Iterable
def find_chain[T: Hashable](
objects: Iterable[T],
start: T,
end: T,
is_next: Callable[[T, T], bool]
) -> list[T]:
nodes = list(objects)
if start == end:
return [start]
visited: set[T] = {start}
parent: dict[T, T | None] = {start: None}
queue = deque([start])
while queue:
current = queue.popleft()
for node in nodes:
if node not in visited and is_next(current, node):
visited.add(node)
parent[node] = current
queue.append(node)
if node == end:
queue.clear()
break
if end not in parent:
return []
path: list[T] = []
curr: T | None = end
while curr is not None:
path.append(curr)
curr = parent[curr]
return path[::-1]

View File

@ -0,0 +1,6 @@
#import urbrato_algo.lazy_graphs as graphs
#words = ['вино', 'сука', 'срок', 'арка', 'тура', 'сова', 'жара', 'день', 'жгут', 'урна', 'заяц', 'зона', 'звук', 'гора', 'гусь', 'руна', 'суша', 'тара', 'враг', 'арба', 'кара', 'поза', 'бобр', 'икра', 'слон', 'доза', 'знак', 'груз', 'глаз', 'жаба', 'база', 'дока', 'губа', 'блин', 'жена', 'доля', 'роса', 'бита', 'каюк', 'друг', 'вера', 'заря', 'дыра', 'буря', 'дача', 'вода', 'кафр', 'дума', 'драп', 'баян', 'суха', 'диво', 'грач', 'дочь', 'брат', 'дуга', 'каюр', 'крюк', 'звон', 'пола', 'вата', 'град', 'банк', 'рука', 'сока', 'урюк', 'иней', 'дека', 'борт', 'бокс', 'сухо', 'мура', 'балл', 'врач', 'долг', 'урок', 'стон', 'мука', 'азот', 'лука', 'кафе', 'жест', 'вход', 'волк', 'муха', 'блок', 'гриф', 'жбан', 'двор', 'дело', 'зима', 'ваза', 'рана', 'сток', 'змея', 'каре', 'горе', 'полк', 'роза', 'арфа', 'игра']
# здесь продолжайте программу
#print(graphs.find_chain(words, 'мура', 'сухо', lambda a,b: sum(1 for i in range(len(a)) if a[i] != b[i]) == 1))