Zadanie 5: Wyszukiwanie wzorców dwuwymiarowych - two_dimensional_search
(2 pkt)
Zaimplementuj algorytm do wyszukiwania wzorca dwuwymiarowego w tekście dwuwymiarowym:
def find_pattern_2d(text: list[str], pattern: list[str]) -> list[tuple[int, int]]:
"""
Wyszukuje wzorzec dwuwymiarowy w tekście dwuwymiarowym.
Args:
text: Tekst dwuwymiarowy (lista ciągów znaków tej samej długości)
pattern: Wzorzec dwuwymiarowy (lista ciągów znaków tej samej długości)
Returns:
Lista krotek (i, j), gdzie (i, j) to współrzędne lewego górnego rogu wzorca w tekście
"""
pass
Twoje zadanie:
- Zaimplementuj algorytm wyszukiwania wzorca dwuwymiarowego
- Wykorzystaj podejście opisane w wykładzie - wyszukiwanie kolumn wzorca w tekście, a następnie weryfikacja ciągłości
- Możesz wykorzystać dowolny algorytm jednowymiarowy do wyszukiwania kolumn (np. Shift-Or, KMP)
- Obsłuż przypadki brzegowe (pusty wzorzec, pusty tekst, nierówne długości wierszy)
- Zoptymalizuj algorytm, aby uniknąć zbędnych porównań
Przykład:
text = [
"abcdef",
"ghijkl",
"mnopqr",
"stuvwx"
]
pattern = [
"hij",
"opq"
]
Wynik: [(1, 2)]
Last updated on