Algorytm ten jest pierwszym odkrytym algorytmem, który rozwiązuje problem wyszukiwania wzorca w tekście, cechuje się złożonością liniową względem długości tekstu oraz wzorca. Jego nazwa pochodzi od trzech matematyków‑informatyków, którzy wspólnie opublikowali ostateczną wersję algorymtu: Donald Ervin Knuth, Vaughan Ronald Pratt oraz James Hiram Morris. W skrócie algorytm nazywamy „KMP”.
Algorytm KMP sprawdza po kolei każdy znak tekstu, do którego możemy dopasować wzorzec. W momencie, gdy pierwszy znak wzorca oraz aktualnie przetwarzany znak tekstu są takie same, rozpoczynamy sprawdzanie po kolei, czy następne znaki wzorca i tekstu są identyczne. Na pierwszy rzut oka metoda ta działa w taki sam sposób, jak metoda naiwna. Usprawnienie pojawia się jednak w momencie, gdy już znaleźliśmy potencjalne dopasowanie, które okazuje się błędne. W takiej sytuacji algorytm KMP pomija sprawdzanie dopasowania na tych następnych pozycjach, które na pewno okażą się błędne.
Pomocna w tym działaniu jest analiza wstępna wzorca, która polega na utworzeniu tablicy częściowych dopasowań. Przechowuje ona liczby całkowite. Długość takiej tablicy to długość wzorca powiększona o 1. Aby najłatwiej wytłumaczyć proces analizy wzorca w algorytmie KMP, posłużymy się wcześniejszą jego wersją (znaną jako algorytm MP), a następnie rozszerzymy ją o pewien dodatkowy przypadek, dzięki któremu powstała jego obecna wersja.
Chcąc dokładnie omówić tę procedurę, musimy wprowadzić kilka pojęć:
prefiks – składająca się z k znaków przednia część łańcucha znaków;
sufiks – składająca się z k znaków końcowa część łańcucha znaków;
prefikso‑sufiks – składająca się z k znaków część łańcucha znaków, która występuje zarówno z przodu, jak i z tyłu;
szerokość prefikso‑sufiksu – długość prefiksu lub sufiksu, z którego składa się prefikso‑sufiks.
Budowa tablicy częściowych dopasowań w algorytmie MP polega na wyznaczeniu maksymalnego prefikso‑sufiksu dla każdego możliwego prefiksu we wzorcu.
Ciekawostka
Algorytmy wyszukiwania wzorca w tekście stosowane są często w genetyce. Przykład, którym się posłużymy, będzie operował na znakach A, C, G, T, czyli na symbolach oznaczających zasady azotowe, z których zbudowane jest DNA. Więcej na temat DNA przeczytasz w e‑materiale DNA jako nośnik informacji genetycznejPO5R814osDNA jako nośnik informacji genetycznej.
Oznaczmy ciąg znaków wzorzec jako W oraz tablicę częściowych dopasowań jako T.
Krok 0:
Na zerowej pozycji w tablicy T wstawimy liczbę -1, która będzie naszym wartownikiem.
RrnePchYkQS1U
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszym: W, puste, G, C, A, T, G, C, G, A ,G ,C. W drugim wierszu kolejno: T, -1, reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 1:
Pierwszy możliwy prefiks wzorca to „G”. Wśród ciągu znaków „G” nie występuje żaden prefikso‑sufiks, zatem kolejny element w tablicy T to 0 – prefikso‑sufiks pusty.
RgRUBIjKyXWzY
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie z literą G zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 2:
Kolejny prefiks wzorca to „GC”. Nie występuje żaden prefikso‑sufiks, zatem jako kolejny element tablicy również wstawiamy 0 – prefikso‑sufiks pusty.
RIpcZTx3g8Zpp
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie i czwarte z kolejnymi literami: G, C zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 3:
Kolejny prefiks to „GCA”. Znowu występuje jedynie prefikso‑sufiks pusty, więc do tablicy wstawiamy 0.
R1HiZ7YFxEf1o
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola od trzeciego do piątego z kolejnymi literami: G, C, A zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 4:
Sytuacja jak poprzednio – wstawiamy 0.
RU4ba4ra2pSPX
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola od trzeciego do szóstego z kolejnymi literami: G, C, A, T zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, 0 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 5:
W aktualnie przeszukiwanym fiksie „GCATG” znaleźliśmy pierwszy prefikso‑sufiks. Jego szerokość wynosi 1, zatem w tablicy umieszczamy element 1.
RacgQ4oKNc0fO
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i siódme zawierające literę G zaznaczono kolorem zielonym, pola od czwartego do szóstego z kolejnymi literami: C, A, T zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, 0, 1 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 6:
W kolejnym prefiksie największy prefikso‑sufiks, jaki znajdziemy, jest o szerokości 2. Zauważmy, że nie musimy w tym kroku przeszukiwać całego prefiksu „GCATGC”, gdyż możemy kontynuować wyszukiwanie, które rozpoczęliśmy w poprzednim kroku.
RBReEkZM4CYou
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie, siódme zawierające literę G, pola czwarte i ósme zawierają literą C, zaznaczono je kolorem zielonym, pola piąte i szóste z kolejnymi literami: A, T zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, 0, 1, 2 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 7:
W tym kroku największy prefikso‑sufiks ma szerokość 1. Pamiętając o informacji z poprzedniego kroku, sprawdź czy uda się rozszerzyć poprzednio znaleziony prefikso‑sufiks. Dopiero gdy próba się nie powiedzie, sprawdzamy, czy możemy znaleźć inny prefikso‑sufiks. Zatem w tym kroku są wykonywane tak naprawdę 2 kroki.
RZgJ9fLy6nTDh
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i dziewiąte zawierające literę G zaznaczono kolorem zielonym, pola od czwartego do ósmego z kolejnymi literami: C, A, T, G, C zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, 0, 1, 2, 1 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 8:
W prefiksie „GCATGCGA” nie ma żadnego prefikso‑sufiksu. Również w tym kroku próbowaliśmy rozszerzyć poprzedni prefikso‑sufiks.
RILM3Vla4JLcB
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola od trzeciego do dziesiątego z kolejnymi literami: G, C, A, T, G, C, G, A zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, 0, 1, 2, 1, 0 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 9:
Znaleźliśmy prefikso‑sufiks o długości 1 – w tablicy zapisujemy tę wartość.
R1MC5MFyqyWtP
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i jedenaste zawierające literę G zaznaczono kolorem zielonym, pola od czwartego do dziesiątego z kolejnymi literami: C, A, T, G, C, G, A zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, 0, 1, 2, 1, 0, 1 reszta pól jest pusta.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Krok 10:
Możemy rozszerzyć poprzednio znaleziony prefikso‑sufiks. Do tablicy wpisujemy wartość o 1 większą niż w poprzednim kroku.
R1GnQT1SkIlHV
Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i jedenaste zawierające literę G, a pola czwarte i dwunaste literę: C. Pola te zaznaczono kolorem zielonym, pola od piątego do dziesiątego z kolejnymi literami: C, A, T, G, C, G, A zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, 0, 1, 2, 1, 0, 1, 2.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Wszystkie powyżej opisane kroki możemy przedstawić za pomocą poniższego pseudokodu. Jako W oznaczono wzorzec:
Linia 1. funkcja budowaTablicyMP otwórz nawias okrągły W zamknij nawias okrągły.
Linia 2. rozmiarT znak równości długość otwórz nawias okrągły W zamknij nawias okrągły plus 1.
Linia 3. stwórz tablicę T o długości rozmiarT.
Linia 4. poz znak równości minus 1.
Linia 5. T otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości minus 1.
Linia 6. otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline zamknij nawias ostrokątny prawy ukośnik prawy ukośnik dla każdego kolejnego prefiksu wzorca.
Linia 7. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiarT minus 1 wykonuj dwukropek.
Linia 8. prawy ukośnik prawy ukośnik dopóki możesz znaleźć dłuższy prefikso minus sufiks.
Linia 9. dopóki poz ampersant gt średnik minus 1 i W otwórz nawias kwadratowy poz zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy wykonuj dwukropek.
Linia 10. poz znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy.
Linia 11. poz plus znak równości 1.
Linia 13. prawy ukośnik prawy ukośnik zapisz szerokość znalezionego prefikso minus sufiksu.
Linia 14. T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości poz.
Linia 16. zwróć T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów codemirror minus holder cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror cm minus s minus default cudzysłów translate znak równości cudzysłów no cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów overflow dwukropek hidden średnik position dwukropek relative średnik width dwukropek 3px średnik height dwukropek 0px średnik top dwukropek 4px średnik left dwukropek 34px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny textarea style znak równości cudzysłów position dwukropek absolute średnik bottom dwukropek minus 1em średnik padding dwukropek 0px średnik width dwukropek 1px średnik height dwukropek 1em średnik min minus height dwukropek 1em średnik outline dwukropek none średnik cudzysłów wrap znak równości cudzysłów off cudzysłów autocorrect znak równości cudzysłów off cudzysłów autocapitalize znak równości cudzysłów none cudzysłów spellcheck znak równości cudzysłów false cudzysłów readonly znak równości cudzysłów cudzysłów tabindex znak równości cudzysłów 0 cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik textarea zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus vscrollbar cudzysłów tabindex znak równości cudzysłów minus 1 cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek block średnik bottom dwukropek 0px średnik width dwukropek 18px średnik visibility dwukropek hidden średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów min minus width dwukropek 1px średnik height dwukropek 505px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus hscrollbar cudzysłów tabindex znak równości cudzysłów minus 1 cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów style znak równości cudzysłów height dwukropek 18px średnik visibility dwukropek hidden średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów height dwukropek 100 procent średnik min minus height dwukropek 1px średnik width dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus scrollbar minus filler cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus filler cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus scroll cudzysłów tabindex znak równości cudzysłów minus 1 cudzysłów draggable znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus sizer cudzysłów style znak równości cudzysłów margin minus left dwukropek 30px średnik margin minus bottom dwukropek 0px średnik border minus right minus width dwukropek 50px średnik min minus height dwukropek 485px średnik min minus width dwukropek 539 kropka 95px średnik padding minus right dwukropek 0px średnik padding minus bottom dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik top dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus lines cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik outline dwukropek none średnik cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus measure cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line minus like cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span zamknij nawias ostrokątny xxxxxxxxxx otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus measure cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik z minus index dwukropek 1 średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus cursors cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus cursor cudzysłów style znak równości cudzysłów left dwukropek 4px średnik top dwukropek 0px średnik height dwukropek 28 kropka 0667px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus code cudzysłów role znak równości cudzysłów presentation cudzysłów style znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 1 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny funkcja budowaTablicyMP otwórz nawias okrągły W zamknij nawias okrągły otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 2 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny rozmiarT znak równości długość otwórz nawias okrągły W zamknij nawias okrągły plus 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 3 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny stwórz tablicę T o długości rozmiarT otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 4 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny poz znak równości minus 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 5 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny T otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości minus 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 6 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 7 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik dla każdego kolejnego prefiksu wzorca otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 8 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiarT minus 1 wykonuj dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 9 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik dopóki możesz znaleźć dłuższy prefikso minus sufiks otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 10 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny dopóki poz ampersant gt średnik minus 1 i W otwórz nawias kwadratowy poz zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy wykonuj dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 11 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny poz znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 12 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny poz plus znak równości 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 13 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 14 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik zapisz szerokość znalezionego prefikso minus sufiksu otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 15 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości poz otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 16 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 17 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny zwróć T otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek absolute średnik height dwukropek 50px średnik width dwukropek 1px średnik border minus bottom dwukropek 0px solid transparent średnik top dwukropek 485px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutters cudzysłów style znak równości cudzysłów height dwukropek 535px średnik left dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter CodeMirror minus linenumbers cudzysłów style znak równości cudzysłów width dwukropek 29px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny h2 data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 5A cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 5A cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Usprawnienie otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik h2 zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 33 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 33 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Omówmy dodatkowy przecinek wspominany już przypadek przecinek który ulepsza metodę MP do KMP kropka Występuje wówczas przecinek gdy znaleźliśmy prefikso‑sufiks otwórz nawias okrągły może być pusty zamknij nawias okrągły w aktualnie sprawdzanym prefiksie przecinek ale znak następujący po tym prefiksie przecinek jest taki sam jak ten przecinek który występuje po prefikso‑sufiksie otwórz nawias okrągły po części prefiksowej zamknij nawias okrągły kropka W takiej sytuacji do tablicy wstawiamy wartość przecinek która już została zapisana w tablicy otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny na pozycji określonej długością obecnego prefikso‑sufiksu kropka Jeżeli porównywane elementy są różne przecinek do tablicy wpisujemy długość prefikso‑sufiksu kropka Brzmi to bardzo skomplikowanie kropka Dlatego też prześledźmy to na konkretnym przykładzie – tym samym przecinek który omówiliśmy przy algorytmie MP kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 35 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 35 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 0 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 37 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 37 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Tak jak w przypadku algorytmu MP przecinek na zerowym miejscu tablicy wstawiamy wartownika minus 1 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny RzUoGZ1kXsicH otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów RzUoGZ1kXsicH cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 38 cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 38 cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Wiersz pierwszym dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik RzUoGZ1kXsicH prawy ukośnik 1665413745 prawy ukośnik 1MI20rE33lPJGlSoDh8yN2wzqioAx0ra kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c7597059 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik RzUoGZ1kXsicH prawy ukośnik 1665413745 prawy ukośnik 1MI20rE33lPJGlSoDh8yN2wzqioAx0ra kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia tabelę z dwoma wierszami kropka Wiersz pierwszym dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 39 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 39 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 1 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3B cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3B cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Jedyny prefikso‑sufiks przecinek który jesteśmy w stanie znaleźć przecinek to prefikso‑sufiks pusty kropka Należy jednak porównać zaznaczone na niebiesko elementy otwórz nawias okrągły element występujący po znalezionym prefikso‑sufiksie – cudzysłów G cudzysłów zamknij nawias okrągły oraz element występujący po aktualnie przetwarzanym prefiksie – cudzysłów C cudzysłów zamknij nawias okrągły kropka Są różne przecinek zatem możemy wpisać do tablicy szerokość znalezionego prefikso‑sufiksu – 0 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R1b1ewZxUERcB otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R1b1ewZxUERcB cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3C cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3C cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole trzecie z literą G zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole trzecie i czwarte z literami G przecinek C zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1b1ewZxUERcB prawy ukośnik 1665413745 prawy ukośnik xL0xtyJt5D7K7N8aMgfVywUuVmAe1BlT kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c759ff3a cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1b1ewZxUERcB prawy ukośnik 1665413745 prawy ukośnik xL0xtyJt5D7K7N8aMgfVywUuVmAe1BlT kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole trzecie z literą G zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole trzecie i czwarte z literami G przecinek C zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3D cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3D cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 2 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3F cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3F cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Podobna sytuacja jak w kroku 1 kropka Znaleźliśmy prefikso‑sufiks pusty kropka Porównujemy 2 elementy przecinek które występują po znalezionym prefikso‑sufiksie oraz po przetwarzanej części wzorca kropka Są one różne przecinek zatem możemy wstawić szerokość prefikso‑sufiksu kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R7n66dD3FHgEC otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R7n66dD3FHgEC cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3G cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3G cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola trzecie i czwarte z literami G przecinek C zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole trzecie i piąte z literami G przecinek A zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R7n66dD3FHgEC prawy ukośnik 1665413745 prawy ukośnik xKcJItn7i6LJtP1luAccswmNMYB8RUNG kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a1697 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R7n66dD3FHgEC prawy ukośnik 1665413745 prawy ukośnik xKcJItn7i6LJtP1luAccswmNMYB8RUNG kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola trzecie i czwarte z literami G przecinek C zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole trzecie i piąte z literami G przecinek A zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3H cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3H cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 3 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3J cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3J cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Sytuacja identyczna jak w poprzednim kroku – wstawiamy 0 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R1Ndp9m3HUT0c otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R1Ndp9m3HUT0c cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3K cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3K cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola od trzeciego do piątego z literami G przecinek C przecinek A zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole trzecie i szóste z literami G przecinek T zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1Ndp9m3HUT0c prawy ukośnik 1665413746 prawy ukośnik 2KHHY814lhWqfPaysdK2dhLdJcDsMScY kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a2d45 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1Ndp9m3HUT0c prawy ukośnik 1665413746 prawy ukośnik 2KHHY814lhWqfPaysdK2dhLdJcDsMScY kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola od trzeciego do piątego z literami G przecinek C przecinek A zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole trzecie i szóste z literami G przecinek T zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3L cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3L cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 4 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3N cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3N cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Znowu znaleźliśmy pusty prefikso‑sufiks kropka Jest to jednak pierwszy przypadek przecinek w którym porównywane później elementy są takie same kropka W takiej sytuacji musimy odczytać z tablicy otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny wartość pod indeksem określonym przez długość obecnego prefikso‑sufiksu kropka Długość ta wynosi w tym wypadku 0 otwórz nawias okrągły prefikso‑sufiks pusty zamknij nawias okrągły przecinek otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości minus 1 przecinek zatem ustawiamy wartownika minus 1 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R8TvOk4GdVwej otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R8TvOk4GdVwej cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3Q cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3Q cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola od trzeciego do szóstego z literami G przecinek C przecinek A przecinek T zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole trzecie i siódme z literami G przecinek G zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R8TvOk4GdVwej prawy ukośnik 1665413746 prawy ukośnik vAnhMKPon6ExErlBhQDKl8S7WvP6MAYt kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a409a cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R8TvOk4GdVwej prawy ukośnik 1665413746 prawy ukośnik vAnhMKPon6ExErlBhQDKl8S7WvP6MAYt kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola od trzeciego do szóstego z literami G przecinek C przecinek A przecinek T zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole trzecie i siódme z literami G przecinek G zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3R cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3R cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 5 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3T cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3T cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Znaleźliśmy prefikso‑sufiks o szerokości 1 kropka Elementy przecinek które musimy porównać przecinek są takie same przecinek zatem odczytujemy otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości 0 przecinek wpisujemy 0 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R11veRqkEJC8u otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R11veRqkEJC8u cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3V cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3V cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola trzecie i siódme z literami G przecinek G zaznaczono kolorem zielonym przecinek od czwartego do szóstego z literami C przecinek A przecinek T zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole czwarte i ósme z literami C przecinek C zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R11veRqkEJC8u prawy ukośnik 1665413746 prawy ukośnik 2KUXDWSiXwTKvKmxyJ4XxinZ5eAPlSzD kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a52ce cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R11veRqkEJC8u prawy ukośnik 1665413746 prawy ukośnik 2KUXDWSiXwTKvKmxyJ4XxinZ5eAPlSzD kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola trzecie i siódme z literami G przecinek G zaznaczono kolorem zielonym przecinek od czwartego do szóstego z literami C przecinek A przecinek T zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole czwarte i ósme z literami C przecinek C zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3W cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3W cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 6 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3Y cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3Y cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Prefikso‑sufiks ma szerokość 2 kropka Ponieważ elementy cudzysłów A cudzysłów i cudzysłów G cudzysłów są różne przecinek szerokość wpisujemy do tablicy kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R1B0eTw1CCmlq otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R1B0eTw1CCmlq cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3Z cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 3Z cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola trzecie i siódme z literami G przecinek G przecinek czwarte i ósme z literami C przecinek C zaznaczono kolorem zielonym przecinek od piątego do szóstego z literami A przecinek T zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole piąte i dziewiąte z literami A przecinek G zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 kropka reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1B0eTw1CCmlq prawy ukośnik 1665413746 prawy ukośnik 170TRW89md5zzUJrFiTT2rFoDT9VgFQ7 kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a6440 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1B0eTw1CCmlq prawy ukośnik 1665413746 prawy ukośnik 170TRW89md5zzUJrFiTT2rFoDT9VgFQ7 kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola trzecie i siódme z literami G przecinek G przecinek czwarte i ósme z literami C przecinek C zaznaczono kolorem zielonym przecinek od piątego do szóstego z literami A przecinek T zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole piąte i dziewiąte z literami A przecinek G zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 kropka reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 40 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 40 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 7 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 42 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 42 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny W tym kroku znaleziony prefikso‑sufiks ma szerokość 1 przecinek elementy przecinek które porównujemy są różne przecinek więc do tablicy wstawiamy 1 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R1C3Zs44Ib4kN otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R1C3Zs44Ib4kN cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 43 cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 43 cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola trzecie i dziewiąte przecinek z literami G przecinek G przecinek zaznaczono kolorem zielonym przecinek od czwartego do ósmego z literami C przecinek A przecinek T przecinek G przecinek C zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole czwarte i dziesiąte z literami C przecinek A zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 kropka reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1C3Zs44Ib4kN prawy ukośnik 1665413747 prawy ukośnik A2Gch0qdT5zRgSScglFTv8NYQlo4VFXH kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a75c1 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1C3Zs44Ib4kN prawy ukośnik 1665413747 prawy ukośnik A2Gch0qdT5zRgSScglFTv8NYQlo4VFXH kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola trzecie i dziewiąte przecinek z literami G przecinek G przecinek zaznaczono kolorem zielonym przecinek od czwartego do ósmego z literami C przecinek A przecinek T przecinek G przecinek C zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole czwarte i dziesiąte z literami C przecinek A zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 kropka reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 44 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 44 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 8 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 46 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 46 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Prefikso‑sufiks jest pusty – szerokość 0 kropka Następny element tablicy będzie zatem równy elementowy otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny otwórz nawias kwadratowy 0 zamknij nawias kwadratowy przecinek czyli minus 1 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny RmVc8QKbm7sBU otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów RmVc8QKbm7sBU cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 48 cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 48 cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola od trzeciego do dziesiątego zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole trzecie i jedenaste z literami G przecinek G zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 kropka reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik RmVc8QKbm7sBU prawy ukośnik 1665413747 prawy ukośnik 15j03z9Of0Z8pn3yUzcESfevstfj4L9i kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a8713 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik RmVc8QKbm7sBU prawy ukośnik 1665413747 prawy ukośnik 15j03z9Of0Z8pn3yUzcESfevstfj4L9i kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola od trzeciego do dziesiątego zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole trzecie i jedenaste z literami G przecinek G zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 kropka reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 49 cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 49 cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 9 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4B cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4B cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Udało się rozszerzyć znaleziony w poprzednim kroku prefikso‑sufiks pusty do szerokości 1 kropka Porównywane elementy są takie same przecinek zatem wstawiamy wartość z komórki o indeksie równym szerokości kropka otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości 0 przecinek więc kolejnym elementem będzie 0 kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny RWFr7HrkAitzk otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów RWFr7HrkAitzk cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4D cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4D cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola trzecie i jedenaste przecinek z literami G przecinek G przecinek zaznaczono kolorem zielonym przecinek od czwartego do dziesiątego z literami C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 kropka reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole czwarte i dwunaste z literami C przecinek C zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 przecinek 0 kropka reszta pól jest pusta kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik RWFr7HrkAitzk prawy ukośnik 1665413747 prawy ukośnik IEMNSsyS3BeONBGiaqdHvE8QRQF3dQal kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75a98f1 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik RWFr7HrkAitzk prawy ukośnik 1665413747 prawy ukośnik IEMNSsyS3BeONBGiaqdHvE8QRQF3dQal kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola trzecie i jedenaste przecinek z literami G przecinek G przecinek zaznaczono kolorem zielonym przecinek od czwartego do dziesiątego z literami C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 kropka reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole czwarte i dwunaste z literami C przecinek C zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 przecinek 0 kropka reszta pól jest pusta kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4E cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4E cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny strong zamknij nawias ostrokątny Krok 10 otwórz nawias ostrokątny prawy ukośnik strong zamknij nawias ostrokątny dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4G cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4G cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Szerokość znalezionego prefikso‑sufiksu to 2 kropka Jako że osiągnęliśmy koniec wzorca i nie mamy z czym porównać elementu cudzysłów A cudzysłów przecinek możemy założyć przecinek że zawsze jest on inny od elementu przecinek z którym byśmy go porównywali kropka W rzeczywistości algorytm sprawdza moment przecinek w którym dochodzimy do końca wzorca kropka W takiej sytuacji do tablicy wstawiamy szerokość prefikso‑sufiksu kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R1YYdNUvIqzfn otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R1YYdNUvIqzfn cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4H cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4H cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pola trzecie i jedenaste przecinek z literami G przecinek G oraz pola czwarte i dwunaste z literami C przecinek C zaznaczono kolorem zielonym przecinek od piątego do dziesiątego z literami A przecinek T przecinek G przecinek C przecinek G przecinek A zaznaczono kolorem morskim kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 przecinek 0 reszta pól jest pusta kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Pole piąte z literą przecinek A zaznaczono kolorem granatowym kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 przecinek 0 przecinek 2 kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1YYdNUvIqzfn prawy ukośnik 1665413747 prawy ukośnik 1v91AXei733590xv0Q4ne9urtC9SEwYW kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75aaa6d cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1YYdNUvIqzfn prawy ukośnik 1665413747 prawy ukośnik 1v91AXei733590xv0Q4ne9urtC9SEwYW kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia dwie tabelę z dwoma wierszami kropka Tabela pierwsza dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pola trzecie i jedenaste przecinek z literami G przecinek G oraz pola czwarte i dwunaste z literami C przecinek C zaznaczono kolorem zielonym przecinek od piątego do dziesiątego z literami A przecinek T przecinek G przecinek C przecinek G przecinek A zaznaczono kolorem morskim kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 przecinek 0 reszta pól jest pusta kropka Tabela druga dwukropek Wiersz pierwszy dwukropek W przecinek puste przecinek G przecinek C przecinek A przecinek T przecinek G przecinek C przecinek G przecinek A przecinek G przecinek C kropka Pole piąte z literą przecinek A zaznaczono kolorem granatowym kropka W drugim wierszu kolejno dwukropek T przecinek minus 1 przecinek 0 przecinek 0 przecinek 0 przecinek minus 1 przecinek 0 przecinek 2 przecinek 1 przecinek minus 1 przecinek 0 przecinek 2 kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4I cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4I cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Ostateczny algorytm może być zapisany za pomocą następującego pseudokodu kropka Jako otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny W otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny oznaczono wzorzec przecinek otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny to tablica częściowych dopasowań kropka Zwróćmy uwagę przecinek że różni się od metody MP tylko jedną dodatkową konstrukcją warunkową kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt wcag minus alternative minus text sr minus only has minus icon minus container animation minus ready animated cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Linia 1 kropka funkcja budowaTablicyKMP otwórz nawias okrągły W zamknij nawias okrągły kropka otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny.
Linia 18. Linia 2 kropka rozmiarT znak równości długość otwórz nawias okrągły W zamknij nawias okrągły plus 1 kropka.
Linia 19. Linia 3 kropka stwórz tablicę T o długości rozmiarT kropka.
Linia 20. Linia 4 kropka poz znak równości minus 1 kropka.
Linia 21. Linia 5 kropka T otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości minus 1 kropka.
Linia 22. Linia 7 kropka prawy ukośnik prawy ukośnik dla każdego kolejnego prefiksu wzorca kropka.
Linia 23. Linia 8 kropka dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiarT minus 1 wykonuj dwukropek kropka.
Linia 24. Linia 9 kropka prawy ukośnik prawy ukośnik dopóki możesz znaleźć dłuższy prefikso minus sufiks kropka.
Linia 25. Linia 10 kropka dopóki poz zamknij nawias ostrokątny minus 1 i W otwórz nawias kwadratowy poz zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy wykonuj dwukropek kropka.
Linia 26. Linia 11 kropka poz znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy kropka.
Linia 27. Linia 12 kropka poz plus znak równości 1 kropka.
Linia 28. Linia 14 kropka prawy ukośnik prawy ukośnik usprawnienie kropka.
Linia 29. Linia 16 kropka prawy ukośnik prawy ukośnik jeżeli element występujący po znalezionym kropka.
Linia 30. Linia 17 kropka prawy ukośnik prawy ukośnik prefikso minus sufiksie jest taki sam jak po prefiksie kropka.
Linia 31. Linia 18 kropka jeżeli i znak równości znak równości rozmiarT minus 1 LUB W otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy poz zamknij nawias kwadratowy kropka.
Linia 32. Linia 19 kropka prawy ukośnik prawy ukośnik zapisz szerokość znalezionego prefikso minus sufiksu kropka.
Linia 33. Linia 20 kropka T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości poz kropka.
Linia 34. Linia 21 kropka w przeciwnym wypadku kropka.
Linia 35. Linia 22 kropka prawy ukośnik prawy ukośnik kolejny element tablicy będzie tym samym przecinek kropka.
Linia 36. Linia 23 kropka prawy ukośnik prawy ukośnik co element na pozycji równej szerokości kropka.
Linia 37. Linia 24 kropka prawy ukośnik prawy ukośnik prefikso minus sufiksu kropka.
Linia 38. Linia 25 kropka T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy kropka.
Linia 39. Linia 27 kropka zwróć T kropka.
funkcja budowaTablicyMP(W)
rozmiarT = długość(W) + 1
stwórz tablicę T o długości rozmiarT
poz = -1
T[0] = -1
// dla każdego kolejnego prefiksu wzorca
dla i = 1, 2, ..., rozmiarT - 1 wykonuj:
// dopóki możesz znaleźć dłuższy prefikso-sufiks
dopóki poz > -1 i W[poz] != W[i - 1] wykonuj:
poz = T[poz]
poz += 1
// zapisz szerokość znalezionego prefikso-sufiksu
T[i] = poz
zwróć T</code><div class="codemirror-holder" data-editor-no-parse=""><div class="CodeMirror cm-s-default" translate="no"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 4px; left: 34px;"><textarea style="position: absolute; bottom: -1em; padding: 0px; width: 1px; height: 1em; min-height: 1em; outline: none;" wrap="off" autocorrect="off" autocapitalize="none" spellcheck="false" readonly="" tabindex="0"></textarea></div><div class="CodeMirror-vscrollbar" tabindex="-1" cm-not-content="true" style="display: block; bottom: 0px; width: 18px; visibility: hidden;"><div style="min-width: 1px; height: 505px;"></div></div><div class="CodeMirror-hscrollbar" tabindex="-1" cm-not-content="true" style="height: 18px; visibility: hidden;"><div style="height: 100%; min-height: 1px; width: 0px;"></div></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1" draggable="true"><div class="CodeMirror-sizer" style="margin-left: 30px; margin-bottom: 0px; border-right-width: 50px; min-height: 485px; min-width: 539.95px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div style="position: relative; outline: none;" role="presentation"><div class="CodeMirror-measure"><pre class="CodeMirror-line-like"><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-cursors"><div class="CodeMirror-cursor" style="left: 4px; top: 0px; height: 28.0667px;"> </div></div><div class="CodeMirror-code" role="presentation" style=""><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation">funkcja budowaTablicyMP(W)</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> rozmiarT = długość(W) + 1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> <span class="cm-tab" role="presentation" cm-text=" "> </span>stwórz tablicę T o długości rozmiarT</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> poz = -1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> T[0] = -1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span cm-text=""></span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span class="cm-tab" role="presentation" cm-text=" "> </span>// dla każdego kolejnego prefiksu wzorca</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> dla i = 1, 2, ..., rozmiarT - 1 wykonuj:</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> <span class="cm-tab" role="presentation" cm-text=" "> </span>// dopóki możesz znaleźć dłuższy prefikso-sufiks</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> dopóki poz > -1 i W[poz] != W[i - 1] wykonuj:</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> poz = T[poz]</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> poz += 1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span cm-text=""></span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span class="cm-tab" role="presentation" cm-text=" "> </span><span class="cm-tab" role="presentation" cm-text=" "> </span>// zapisz szerokość znalezionego prefikso-sufiksu</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> T[i] = poz</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span cm-text=""></span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">17</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> zwróć T</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 50px; width: 1px; border-bottom: 0px solid transparent; top: 485px;"></div><div class="CodeMirror-gutters" style="height: 535px; left: 0px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 29px;"></div></div></div></div></div></pre></figure><h2 data-id="DcT6FBT2u_pl_main__5A" id="DcT6FBT2u_pl_main__5A" class="has-icon-container animation-ready animated">Usprawnienie <span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="" data-specifier-type-main=""><span data-alternative=""></span><span data-value=""></span></span></span></h2><p id="DcT6FBT2u_pl_main__33" data-id="DcT6FBT2u_pl_main__33" class="has-icon-container animation-ready animated">Omówmy dodatkowy, wspominany już przypadek, który ulepsza metodę MP do KMP. Występuje wówczas, gdy znaleźliśmy prefikso‑sufiks (może być pusty) w aktualnie sprawdzanym prefiksie, ale znak następujący po tym prefiksie, jest taki sam jak ten, który występuje po prefikso‑sufiksie (po części prefiksowej). W takiej sytuacji do tablicy wstawiamy wartość, która już została zapisana w tablicy <code style="white-space: pre;" data-inline="">T</code> na pozycji określonej długością obecnego prefikso‑sufiksu. Jeżeli porównywane elementy są różne, do tablicy wpisujemy długość prefikso‑sufiksu. Brzmi to bardzo skomplikowanie. Dlatego też prześledźmy to na konkretnym przykładzie – tym samym, który omówiliśmy przy algorytmie MP.</p><p id="DcT6FBT2u_pl_main__35" data-id="DcT6FBT2u_pl_main__35" class="has-icon-container animation-ready animated"><strong>Krok 0</strong>:</p><p id="DcT6FBT2u_pl_main__37" data-id="DcT6FBT2u_pl_main__37" class="has-icon-container animation-ready animated">Tak jak w przypadku algorytmu MP, na zerowym miejscu tablicy wstawiamy wartownika -1.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">RzUoGZ1kXsicH</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="RzUoGZ1kXsicH" data-id="DcT6FBT2u_pl_main__38" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__38"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia tabelę z dwoma wierszami. <br> Wiersz pierwszym: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> W drugim wierszu kolejno: T, -1, reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/RzUoGZ1kXsicH/1665413745/1MI20rE33lPJGlSoDh8yN2wzqioAx0ra.png" data-lightbox="677d0c7597059" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/RzUoGZ1kXsicH/1665413745/1MI20rE33lPJGlSoDh8yN2wzqioAx0ra.png" alt="Ilustracja przedstawia tabelę z dwoma wierszami. Wiersz pierwszym: W, puste, G, C, A, T, G, C, G, A ,G ,C. W drugim wierszu kolejno: T, -1, reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__39" data-id="DcT6FBT2u_pl_main__39" class="has-icon-container animation-ready animated"><strong>Krok 1</strong>:</p><p id="DcT6FBT2u_pl_main__3B" data-id="DcT6FBT2u_pl_main__3B" class="has-icon-container animation-ready animated">Jedyny prefikso‑sufiks, który jesteśmy w stanie znaleźć, to prefikso‑sufiks pusty. Należy jednak porównać zaznaczone na niebiesko elementy (element występujący po znalezionym prefikso‑sufiksie – "G") oraz element występujący po aktualnie przetwarzanym prefiksie – "C"). Są różne, zatem możemy wpisać do tablicy szerokość znalezionego prefikso‑sufiksu – 0.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R1b1ewZxUERcB</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R1b1ewZxUERcB" data-id="DcT6FBT2u_pl_main__3C" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__3C"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole trzecie z literą G zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole trzecie i czwarte z literami G, C zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0 reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R1b1ewZxUERcB/1665413745/xL0xtyJt5D7K7N8aMgfVywUuVmAe1BlT.png" data-lightbox="677d0c759ff3a" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R1b1ewZxUERcB/1665413745/xL0xtyJt5D7K7N8aMgfVywUuVmAe1BlT.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie z literą G zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie i czwarte z literami G, C zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0 reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__3D" data-id="DcT6FBT2u_pl_main__3D" class="has-icon-container animation-ready animated"><strong>Krok 2</strong>:</p><p id="DcT6FBT2u_pl_main__3F" data-id="DcT6FBT2u_pl_main__3F" class="has-icon-container animation-ready animated">Podobna sytuacja jak w kroku 1. Znaleźliśmy prefikso‑sufiks pusty. Porównujemy 2 elementy, które występują po znalezionym prefikso‑sufiksie oraz po przetwarzanej części wzorca. Są one różne, zatem możemy wstawić szerokość prefikso‑sufiksu.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R7n66dD3FHgEC</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R7n66dD3FHgEC" data-id="DcT6FBT2u_pl_main__3G" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__3G"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola trzecie i czwarte z literami G, C zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0 reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole trzecie i piąte z literami G, A zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0 reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R7n66dD3FHgEC/1665413745/xKcJItn7i6LJtP1luAccswmNMYB8RUNG.png" data-lightbox="677d0c75a1697" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R7n66dD3FHgEC/1665413745/xKcJItn7i6LJtP1luAccswmNMYB8RUNG.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i czwarte z literami G, C zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0 reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie i piąte z literami G, A zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0 reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__3H" data-id="DcT6FBT2u_pl_main__3H" class="has-icon-container animation-ready animated"><strong>Krok 3</strong>:</p><p id="DcT6FBT2u_pl_main__3J" data-id="DcT6FBT2u_pl_main__3J" class="has-icon-container animation-ready animated">Sytuacja identyczna jak w poprzednim kroku – wstawiamy 0.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R1Ndp9m3HUT0c</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R1Ndp9m3HUT0c" data-id="DcT6FBT2u_pl_main__3K" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__3K"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola od trzeciego do piątego z literami G, C, A zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0 reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole trzecie i szóste z literami G, T zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0 reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R1Ndp9m3HUT0c/1665413746/2KHHY814lhWqfPaysdK2dhLdJcDsMScY.png" data-lightbox="677d0c75a2d45" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R1Ndp9m3HUT0c/1665413746/2KHHY814lhWqfPaysdK2dhLdJcDsMScY.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola od trzeciego do piątego z literami G, C, A zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0 reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie i szóste z literami G, T zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0 reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__3L" data-id="DcT6FBT2u_pl_main__3L" class="has-icon-container animation-ready animated"><strong>Krok 4</strong>:</p><p id="DcT6FBT2u_pl_main__3N" data-id="DcT6FBT2u_pl_main__3N" class="has-icon-container animation-ready animated">Znowu znaleźliśmy pusty prefikso‑sufiks. Jest to jednak pierwszy przypadek, w którym porównywane później elementy są takie same. W takiej sytuacji musimy odczytać z tablicy <code style="white-space: pre;" data-inline="">T</code> wartość pod indeksem określonym przez długość obecnego prefikso‑sufiksu. Długość ta wynosi w tym wypadku 0 (prefikso‑sufiks pusty), <code style="white-space: pre;" data-inline="">T</code>[0] = -1, zatem ustawiamy wartownika -1.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R8TvOk4GdVwej</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R8TvOk4GdVwej" data-id="DcT6FBT2u_pl_main__3Q" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__3Q"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola od trzeciego do szóstego z literami G, C, A, T zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0 reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole trzecie i siódme z literami G, G zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R8TvOk4GdVwej/1665413746/vAnhMKPon6ExErlBhQDKl8S7WvP6MAYt.png" data-lightbox="677d0c75a409a" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R8TvOk4GdVwej/1665413746/vAnhMKPon6ExErlBhQDKl8S7WvP6MAYt.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola od trzeciego do szóstego z literami G, C, A, T zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0 reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie i siódme z literami G, G zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__3R" data-id="DcT6FBT2u_pl_main__3R" class="has-icon-container animation-ready animated"><strong>Krok 5</strong>:</p><p id="DcT6FBT2u_pl_main__3T" data-id="DcT6FBT2u_pl_main__3T" class="has-icon-container animation-ready animated">Znaleźliśmy prefikso‑sufiks o szerokości 1. Elementy, które musimy porównać, są takie same, zatem odczytujemy <code style="white-space: pre;" data-inline="">T</code>[1] = 0, wpisujemy 0.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R11veRqkEJC8u</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R11veRqkEJC8u" data-id="DcT6FBT2u_pl_main__3V" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__3V"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola trzecie i siódme z literami G, G zaznaczono kolorem zielonym, od czwartego do szóstego z literami C, A, T zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole czwarte i ósme z literami C, C zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R11veRqkEJC8u/1665413746/2KUXDWSiXwTKvKmxyJ4XxinZ5eAPlSzD.png" data-lightbox="677d0c75a52ce" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R11veRqkEJC8u/1665413746/2KUXDWSiXwTKvKmxyJ4XxinZ5eAPlSzD.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i siódme z literami G, G zaznaczono kolorem zielonym, od czwartego do szóstego z literami C, A, T zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole czwarte i ósme z literami C, C zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__3W" data-id="DcT6FBT2u_pl_main__3W" class="has-icon-container animation-ready animated"><strong>Krok 6</strong>:</p><p id="DcT6FBT2u_pl_main__3Y" data-id="DcT6FBT2u_pl_main__3Y" class="has-icon-container animation-ready animated">Prefikso‑sufiks ma szerokość 2. Ponieważ elementy "A" i "G" są różne, szerokość wpisujemy do tablicy.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R1B0eTw1CCmlq</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R1B0eTw1CCmlq" data-id="DcT6FBT2u_pl_main__3Z" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__3Z"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola trzecie i siódme z literami G, G, czwarte i ósme z literami C, C zaznaczono kolorem zielonym, od piątego do szóstego z literami A, T zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole piąte i dziewiąte z literami A, G zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2. reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R1B0eTw1CCmlq/1665413746/170TRW89md5zzUJrFiTT2rFoDT9VgFQ7.png" data-lightbox="677d0c75a6440" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R1B0eTw1CCmlq/1665413746/170TRW89md5zzUJrFiTT2rFoDT9VgFQ7.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i siódme z literami G, G, czwarte i ósme z literami C, C zaznaczono kolorem zielonym, od piątego do szóstego z literami A, T zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole piąte i dziewiąte z literami A, G zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2. reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__40" data-id="DcT6FBT2u_pl_main__40" class="has-icon-container animation-ready animated"><strong>Krok 7</strong>:</p><p id="DcT6FBT2u_pl_main__42" data-id="DcT6FBT2u_pl_main__42" class="has-icon-container animation-ready animated">W tym kroku znaleziony prefikso‑sufiks ma szerokość 1, elementy, które porównujemy są różne, więc do tablicy wstawiamy 1.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R1C3Zs44Ib4kN</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R1C3Zs44Ib4kN" data-id="DcT6FBT2u_pl_main__43" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__43"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola trzecie i dziewiąte, z literami G, G, zaznaczono kolorem zielonym, od czwartego do ósmego z literami C, A, T, G, C zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole czwarte i dziesiąte z literami C, A zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1. reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R1C3Zs44Ib4kN/1665413747/A2Gch0qdT5zRgSScglFTv8NYQlo4VFXH.png" data-lightbox="677d0c75a75c1" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R1C3Zs44Ib4kN/1665413747/A2Gch0qdT5zRgSScglFTv8NYQlo4VFXH.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i dziewiąte, z literami G, G, zaznaczono kolorem zielonym, od czwartego do ósmego z literami C, A, T, G, C zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole czwarte i dziesiąte z literami C, A zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1. reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__44" data-id="DcT6FBT2u_pl_main__44" class="has-icon-container animation-ready animated"><strong>Krok 8</strong>:</p><p id="DcT6FBT2u_pl_main__46" data-id="DcT6FBT2u_pl_main__46" class="has-icon-container animation-ready animated">Prefikso‑sufiks jest pusty – szerokość 0. Następny element tablicy będzie zatem równy elementowy <code style="white-space: pre;" data-inline="">T</code>[0], czyli -1.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">RmVc8QKbm7sBU</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="RmVc8QKbm7sBU" data-id="DcT6FBT2u_pl_main__48" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__48"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola od trzeciego do dziesiątego zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, 1, reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole trzecie i jedenaste z literami G, G zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1, -1. reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/RmVc8QKbm7sBU/1665413747/15j03z9Of0Z8pn3yUzcESfevstfj4L9i.png" data-lightbox="677d0c75a8713" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/RmVc8QKbm7sBU/1665413747/15j03z9Of0Z8pn3yUzcESfevstfj4L9i.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola od trzeciego do dziesiątego zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, 1, reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole trzecie i jedenaste z literami G, G zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1, -1. reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__49" data-id="DcT6FBT2u_pl_main__49" class="has-icon-container animation-ready animated"><strong>Krok 9</strong>:</p><p id="DcT6FBT2u_pl_main__4B" data-id="DcT6FBT2u_pl_main__4B" class="has-icon-container animation-ready animated">Udało się rozszerzyć znaleziony w poprzednim kroku prefikso‑sufiks pusty do szerokości 1. Porównywane elementy są takie same, zatem wstawiamy wartość z komórki o indeksie równym szerokości. <code style="white-space: pre;" data-inline="">T</code>[1] = 0, więc kolejnym elementem będzie 0.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">RWFr7HrkAitzk</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="RWFr7HrkAitzk" data-id="DcT6FBT2u_pl_main__4D" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__4D"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola trzecie i jedenaste, z literami G, G, zaznaczono kolorem zielonym, od czwartego do dziesiątego z literami C, A, T, G, C, G, A zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, 1, -1. reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole czwarte i dwunaste z literami C, C zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1, -1, 0. reszta pól jest pusta.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/RWFr7HrkAitzk/1665413747/IEMNSsyS3BeONBGiaqdHvE8QRQF3dQal.png" data-lightbox="677d0c75a98f1" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/RWFr7HrkAitzk/1665413747/IEMNSsyS3BeONBGiaqdHvE8QRQF3dQal.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i jedenaste, z literami G, G, zaznaczono kolorem zielonym, od czwartego do dziesiątego z literami C, A, T, G, C, G, A zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, 1, -1. reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole czwarte i dwunaste z literami C, C zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1, -1, 0. reszta pól jest pusta." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__4E" data-id="DcT6FBT2u_pl_main__4E" class="has-icon-container animation-ready animated"><strong>Krok 10</strong>:</p><p id="DcT6FBT2u_pl_main__4G" data-id="DcT6FBT2u_pl_main__4G" class="has-icon-container animation-ready animated">Szerokość znalezionego prefikso‑sufiksu to 2. Jako że osiągnęliśmy koniec wzorca i nie mamy z czym porównać elementu "A", możemy założyć, że zawsze jest on inny od elementu, z którym byśmy go porównywali. W rzeczywistości algorytm sprawdza moment, w którym dochodzimy do końca wzorca. W takiej sytuacji do tablicy wstawiamy szerokość prefikso‑sufiksu.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R1YYdNUvIqzfn</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R1YYdNUvIqzfn" data-id="DcT6FBT2u_pl_main__4H" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__4H"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia dwie tabelę z dwoma wierszami. <br> Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pola trzecie i jedenaste, z literami G, G oraz pola czwarte i dwunaste z literami C, C zaznaczono kolorem zielonym, od piątego do dziesiątego z literami A, T, G, C ,G, A zaznaczono kolorem morskim. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, 1, -1, 0 reszta pól jest pusta. <br> Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. <br> Pole piąte z literą, A zaznaczono kolorem granatowym. <br> W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1, -1, 0, 2.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R1YYdNUvIqzfn/1665413747/1v91AXei733590xv0Q4ne9urtC9SEwYW.png" data-lightbox="677d0c75aaa6d" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R1YYdNUvIqzfn/1665413747/1v91AXei733590xv0Q4ne9urtC9SEwYW.png" alt="Ilustracja przedstawia dwie tabelę z dwoma wierszami. Tabela pierwsza: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pola trzecie i jedenaste, z literami G, G oraz pola czwarte i dwunaste z literami C, C zaznaczono kolorem zielonym, od piątego do dziesiątego z literami A, T, G, C ,G, A zaznaczono kolorem morskim. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0 , 2, 1, -1, 0 reszta pól jest pusta. Tabela druga: Wiersz pierwszy: W, puste, G, C, A, T, G, C, G, A ,G ,C. Pole piąte z literą, A zaznaczono kolorem granatowym. W drugim wierszu kolejno: T, -1, 0, 0, 0, -1, 0, 2, 1, -1, 0, 2." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__4I" data-id="DcT6FBT2u_pl_main__4I" class="has-icon-container animation-ready animated">Ostateczny algorytm może być zapisany za pomocą następującego pseudokodu. Jako <code style="white-space: pre;" data-inline="">W</code> oznaczono wzorzec, <code style="white-space: pre;" data-inline="">T</code> to tablica częściowych dopasowań. Zwróćmy uwagę, że różni się od metody MP tylko jedną dodatkową konstrukcją warunkową.</p><div class="cp-editor-alt wcag-alternative-text sr-only has-icon-container animation-ready animated" data-editor-no-parse="" lang="pl">Linia 1. funkcja budowaTablicyKMP otwórz nawias okrągły W zamknij nawias okrągły.
Linia 2. rozmiarT znak równości długość otwórz nawias okrągły W zamknij nawias okrągły plus 1.
Linia 3. stwórz tablicę T o długości rozmiarT.
Linia 4. poz znak równości minus 1.
Linia 5. T otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości minus 1.
Linia 7. prawy ukośnik prawy ukośnik dla każdego kolejnego prefiksu wzorca.
Linia 8. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiarT minus 1 wykonuj dwukropek.
Linia 9. prawy ukośnik prawy ukośnik dopóki możesz znaleźć dłuższy prefikso minus sufiks.
Linia 10. dopóki poz zamknij nawias ostrokątny minus 1 i W otwórz nawias kwadratowy poz zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy wykonuj dwukropek.
Linia 11. poz znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy.
Linia 12. poz plus znak równości 1.
Linia 14. prawy ukośnik prawy ukośnik usprawnienie.
Linia 16. prawy ukośnik prawy ukośnik jeżeli element występujący po znalezionym.
Linia 17. prawy ukośnik prawy ukośnik prefikso minus sufiksie jest taki sam jak po prefiksie.
Linia 18. jeżeli i znak równości znak równości rozmiarT minus 1 LUB W otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy poz zamknij nawias kwadratowy.
Linia 19. prawy ukośnik prawy ukośnik zapisz szerokość znalezionego prefikso minus sufiksu.
Linia 20. T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości poz.
Linia 21. w przeciwnym wypadku.
Linia 22. prawy ukośnik prawy ukośnik kolejny element tablicy będzie tym samym przecinek.
Linia 23. prawy ukośnik prawy ukośnik co element na pozycji równej szerokości.
Linia 24. prawy ukośnik prawy ukośnik prefikso minus sufiksu.
Linia 25. T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy.
Linia 27. zwróć T.
Linia 1. funkcja budowaTablicyKMP otwórz nawias okrągły W zamknij nawias okrągły.
Linia 2. rozmiarT znak równości długość otwórz nawias okrągły W zamknij nawias okrągły plus 1.
Linia 3. stwórz tablicę T o długości rozmiarT.
Linia 4. poz znak równości minus 1.
Linia 5. T otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości minus 1.
Linia 6. otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline zamknij nawias ostrokątny prawy ukośnik prawy ukośnik dla każdego kolejnego prefiksu wzorca.
Linia 7. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiarT minus 1 wykonuj dwukropek.
Linia 8. prawy ukośnik prawy ukośnik dopóki możesz znaleźć dłuższy prefikso minus sufiks.
Linia 9. dopóki poz ampersant gt średnik minus 1 i W otwórz nawias kwadratowy poz zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy wykonuj dwukropek.
Linia 10. poz znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy.
Linia 11. poz plus znak równości 1.
Linia 13. prawy ukośnik prawy ukośnik usprawnienie.
Linia 15. prawy ukośnik prawy ukośnik jeżeli element występujący po znalezionym.
Linia 16. prawy ukośnik prawy ukośnik prefikso minus sufiksie jest taki sam jak po prefiksie.
Linia 17. jeżeli i znak równości znak równości rozmiarT minus 1 LUB W otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy poz zamknij nawias kwadratowy.
Linia 18. prawy ukośnik prawy ukośnik zapisz szerokość znalezionego prefikso minus sufiksu.
Linia 19. T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości poz.
Linia 20. w przeciwnym wypadku.
Linia 21. prawy ukośnik prawy ukośnik kolejny element tablicy będzie tym samym przecinek.
Linia 22. prawy ukośnik prawy ukośnik co element na pozycji równej szerokości.
Linia 23. prawy ukośnik prawy ukośnik prefikso minus sufiksu.
Linia 24. T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy.
Linia 26. zwróć T otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów codemirror minus holder cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror cm minus s minus default cudzysłów translate znak równości cudzysłów no cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów overflow dwukropek hidden średnik position dwukropek relative średnik width dwukropek 3px średnik height dwukropek 0px średnik top dwukropek 4px średnik left dwukropek 34px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny textarea style znak równości cudzysłów position dwukropek absolute średnik bottom dwukropek minus 1em średnik padding dwukropek 0px średnik width dwukropek 1px średnik height dwukropek 1em średnik min minus height dwukropek 1em średnik outline dwukropek none średnik cudzysłów wrap znak równości cudzysłów off cudzysłów autocorrect znak równości cudzysłów off cudzysłów autocapitalize znak równości cudzysłów none cudzysłów spellcheck znak równości cudzysłów false cudzysłów readonly znak równości cudzysłów cudzysłów tabindex znak równości cudzysłów 0 cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik textarea zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus vscrollbar cudzysłów tabindex znak równości cudzysłów minus 1 cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek block średnik bottom dwukropek 0px średnik width dwukropek 18px średnik visibility dwukropek hidden średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów min minus width dwukropek 1px średnik height dwukropek 786px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus hscrollbar cudzysłów tabindex znak równości cudzysłów minus 1 cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów style znak równości cudzysłów height dwukropek 18px średnik visibility dwukropek hidden średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów height dwukropek 100 procent średnik min minus height dwukropek 1px średnik width dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus scrollbar minus filler cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus filler cudzysłów cm minus not minus content znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus scroll cudzysłów tabindex znak równości cudzysłów minus 1 cudzysłów draggable znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus sizer cudzysłów style znak równości cudzysłów margin minus left dwukropek 30px średnik margin minus bottom dwukropek 0px średnik border minus right minus width dwukropek 50px średnik min minus height dwukropek 766px średnik min minus width dwukropek 577 kropka 35px średnik padding minus right dwukropek 0px średnik padding minus bottom dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik top dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus lines cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik outline dwukropek none średnik cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus measure cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line minus like cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span zamknij nawias ostrokątny xxxxxxxxxx otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus measure cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik z minus index dwukropek 1 średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus cursors cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus cursor cudzysłów style znak równości cudzysłów left dwukropek 4px średnik top dwukropek 0px średnik height dwukropek 28 kropka 0667px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus code cudzysłów role znak równości cudzysłów presentation cudzysłów style znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 1 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny funkcja budowaTablicyKMP otwórz nawias okrągły W zamknij nawias okrągły otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 2 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny rozmiarT znak równości długość otwórz nawias okrągły W zamknij nawias okrągły plus 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 3 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny stwórz tablicę T o długości rozmiarT otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 4 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny poz znak równości minus 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 5 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny T otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości minus 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 6 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 7 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik dla każdego kolejnego prefiksu wzorca otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 8 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek rozmiarT minus 1 wykonuj dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 9 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik dopóki możesz znaleźć dłuższy prefikso minus sufiks otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 10 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny dopóki poz ampersant gt średnik minus 1 i W otwórz nawias kwadratowy poz zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy i minus 1 zamknij nawias kwadratowy wykonuj dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 11 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny poz znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 12 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny poz plus znak równości 1 otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 13 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 14 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik usprawnienie otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 15 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 16 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny prawy ukośnik prawy ukośnik jeżeli element występujący po znalezionym otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 17 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny prawy ukośnik prawy ukośnik prefikso minus sufiksie jest taki sam jak po prefiksie otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 18 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny jeżeli i znak równości znak równości rozmiarT minus 1 LUB W otwórz nawias kwadratowy i zamknij nawias kwadratowy wykrzyknik znak równości W otwórz nawias kwadratowy poz zamknij nawias kwadratowy otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 19 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik zapisz szerokość znalezionego prefikso minus sufiksu otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 20 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości poz otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 21 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny w przeciwnym wypadku otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 22 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów cm minus tab cudzysłów role znak równości cudzysłów presentation cudzysłów cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny prawy ukośnik prawy ukośnik kolejny element tablicy będzie tym samym przecinek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 23 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny prawy ukośnik prawy ukośnik co element na pozycji równej szerokości otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 24 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny prawy ukośnik prawy ukośnik prefikso minus sufiksu otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 25 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny T otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości T otwórz nawias kwadratowy poz zamknij nawias kwadratowy otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 26 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span cm minus text znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek relative średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter minus wrapper cudzysłów style znak równości cudzysłów left dwukropek minus 30px średnik cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus linenumber CodeMirror minus gutter minus elt cudzysłów style znak równości cudzysłów left dwukropek 0px średnik width dwukropek 21px średnik cudzysłów zamknij nawias ostrokątny 27 otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny pre class znak równości cudzysłów CodeMirror minus line cudzysłów role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span role znak równości cudzysłów presentation cudzysłów zamknij nawias ostrokątny zwróć T otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div style znak równości cudzysłów position dwukropek absolute średnik height dwukropek 50px średnik width dwukropek 1px średnik border minus bottom dwukropek 0px solid transparent średnik top dwukropek 766px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutters cudzysłów style znak równości cudzysłów height dwukropek 816px średnik left dwukropek 0px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów CodeMirror minus gutter CodeMirror minus linenumbers cudzysłów style znak równości cudzysłów width dwukropek 29px średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik pre zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny h2 data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 5B cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 5B cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Wykorzystanie tablicy częściowych dopasowań otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik h2 zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4N cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4N cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Dlaczego budujemy tablicę częściowych dopasowań znak zapytania Wyobraźmy sobie prosty przykład przecinek w którym metodą naiwną próbujemy znaleźć dopasowanie wzorca otwórz nawias okrągły otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny AAB otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny zamknij nawias okrągły w tekście otwórz nawias okrągły otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny AAAAAAB otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny zamknij nawias okrągły kropka Dopasowania zaznaczamy na zielono kropka Czerwonym kolorem oznaczamy te próby przecinek które kończą się niepowodzeniem kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R1Tz3dbWp8KYW otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R1Tz3dbWp8KYW cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4Q cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4Q cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia szukanie wzorca dwukropek AAB przecinek w ciągu liter dwukropek AAAAAAB kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Na samej górze umieszczono ciąg liter dwukropek AAAAAAB kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Poniżej znajduje się 15 linii gdzie dwukropek AAB przesuwane jest o jedną literę względem AAAAAAB kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii pierwszej dwukropek A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii drugiej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii trzeciej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii czwartej dwukropek A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii piątej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii szóstej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii siódmej dwukropek A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii ósmej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii dziewiątej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii dziesiątej dwukropek A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii jedenastej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii dwunastej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii trzynastej dwukropek A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii czternastej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii piętnastej dwukropek B podświetlone jest na zielono kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1Tz3dbWp8KYW prawy ukośnik 1665413747 prawy ukośnik 2Y8WGNwA0fgX9tdZJ2xkeVaTFjjKl6iZ kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75ac587 cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1Tz3dbWp8KYW prawy ukośnik 1665413747 prawy ukośnik 2Y8WGNwA0fgX9tdZJ2xkeVaTFjjKl6iZ kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia szukanie wzorca dwukropek AAB przecinek w ciągu liter dwukropek AAAAAAB kropka Na samej górze umieszczono ciąg liter dwukropek AAAAAAB kropka Poniżej znajduje się 15 linii gdzie dwukropek AAB przesuwane jest o jedną literę względem AAAAAAB kropka W linii pierwszej dwukropek A podświetlone jest na zielono kropka W linii drugiej dwukropek drugie A podświetlone jest na zielono kropka W linii trzeciej dwukropek B podświetlone jest na czerwono kropka W linii czwartej dwukropek A podświetlone jest na zielono kropka W linii piątej dwukropek drugie A podświetlone jest na zielono kropka W linii szóstej dwukropek B podświetlone jest na czerwono kropka W linii siódmej dwukropek A podświetlone jest na zielono kropka W linii ósmej dwukropek drugie A podświetlone jest na zielono kropka W linii dziewiątej dwukropek B podświetlone jest na czerwono kropka W linii dziesiątej dwukropek A podświetlone jest na zielono kropka W linii jedenastej dwukropek drugie A podświetlone jest na zielono kropka W linii dwunastej dwukropek B podświetlone jest na czerwono kropka W linii trzynastej dwukropek A podświetlone jest na zielono kropka W linii czternastej dwukropek drugie A podświetlone jest na zielono kropka W linii piętnastej dwukropek B podświetlone jest na zielono kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4R cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4R cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Już po pierwszej próbie dopasowania widoczne jest przecinek że kolejną próbę dopasowania możemy rozpocząć przecinek pomijając sprawdzenie pierwszego znaku kropka Wiemy bowiem przecinek że drugi znak jest taki sam jak pierwszy przecinek a drugi w tym miejscu już pasował kropka Optymalne dopasowywanie wyglądałoby w następujący sposób dwukropek otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny section data minus block minus name znak równości cudzysłów ResourceElement cudzysłów data minus block minus resolved minus by znak równości cudzysłów media cudzysłów data minus editor minus block znak równości cudzysłów cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus editor minus params znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus specifier minus resolvedby znak równości cudzysłów cudzysłów data minus specifier minus type znak równości cudzysłów media cudzysłów data minus specifier minus type minus main znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus alternative znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span data minus value znak równości cudzysłów cudzysłów zamknij nawias ostrokątny R1I5GNluWq20I otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny div data minus editor minus block minus content znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny figure class znak równości cudzysłów figure image cp minus image cudzysłów data minus exercise minus level znak równości cudzysłów cudzysłów data minus resource minus id znak równości cudzysłów R1I5GNluWq20I cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4S cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów data minus resource minus status znak równości cudzysłów cudzysłów id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4S cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt cudzysłów aria minus hidden znak równości cudzysłów true cudzysłów style znak równości cudzysłów display dwukropek none cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Ilustracja przedstawia szukanie wzorca dwukropek AAB przecinek w ciągu liter dwukropek AAAAAAB kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Na samej górze umieszczono ciąg liter dwukropek AAAAAAB kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny Poniżej znajduje się 11 linii gdzie dwukropek AAB przesuwane jest o jedną literę względem AAAAAAB kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii pierwszej dwukropek A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii drugiej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii trzeciej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii czwartej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii piątej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii szóstej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii siódmej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii ósmej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii dziewiątej dwukropek B podświetlone jest na czerwono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii dziesiątej dwukropek drugie A podświetlone jest na zielono kropka otwórz nawias ostrokątny br zamknij nawias ostrokątny W linii jedenastej dwukropek B podświetlone jest na zielono kropka otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów image minus link image minus fullscreen minus trigger cudzysłów href znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1I5GNluWq20I prawy ukośnik 1665413748 prawy ukośnik 110DIOvHq3Rkst9T9j2sifz2B5joTOYn kropka png cudzysłów data minus lightbox znak równości cudzysłów 677d0c75ad70d cudzysłów data minus title znak równości cudzysłów ampersant lt średnik div class znak równości ampersant quot średnik figcaption podkreślnik content ampersant quot średnik data minus editor minus disabled ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik ampersant lt średnik div class znak równości ampersant quot średnik figure podkreślnik caption podkreślnik bibliography ampersant quot średnik data minus editor minus no minus parse ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik pl ampersant quot średnik ampersant gt średnik ampersant lt średnik span class znak równości ampersant quot średnik ref minus minus before ampersant quot średnik ampersant gt średnik Źródło dwukropek ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik span lang znak równości ampersant quot średnik en ampersant quot średnik ampersant gt średnik Contentplus ampersant lt średnik prawy ukośnik span ampersant gt średnik kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka ampersant lt średnik prawy ukośnik span ampersant gt średnik ampersant lt średnik prawy ukośnik div ampersant gt średnik cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny picture zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów sr minus only cudzysłów zamknij nawias ostrokątny Kliknij przecinek aby uruchomić podgląd otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny img src znak równości cudzysłów https dwukropek prawy ukośnik prawy ukośnik static kropka zpe kropka gov kropka pl prawy ukośnik portal prawy ukośnik f prawy ukośnik res minus minimized prawy ukośnik R1I5GNluWq20I prawy ukośnik 1665413748 prawy ukośnik 110DIOvHq3Rkst9T9j2sifz2B5joTOYn kropka png cudzysłów alt znak równości cudzysłów Ilustracja przedstawia szukanie wzorca dwukropek AAB przecinek w ciągu liter dwukropek AAAAAAB kropka Na samej górze umieszczono ciąg liter dwukropek AAAAAAB kropka Poniżej znajduje się 11 linii gdzie dwukropek AAB przesuwane jest o jedną literę względem AAAAAAB kropka W linii pierwszej dwukropek A podświetlone jest na zielono kropka W linii drugiej dwukropek drugie A podświetlone jest na zielono kropka W linii trzeciej dwukropek B podświetlone jest na czerwono kropka W linii czwartej dwukropek drugie A podświetlone jest na zielono kropka W linii piątej dwukropek B podświetlone jest na czerwono kropka W linii szóstej dwukropek drugie A podświetlone jest na zielono kropka W linii siódmej dwukropek B podświetlone jest na czerwono kropka W linii ósmej dwukropek drugie A podświetlone jest na zielono kropka W linii dziewiątej dwukropek B podświetlone jest na czerwono kropka W linii dziesiątej dwukropek drugie A podświetlone jest na zielono kropka W linii jedenastej dwukropek B podświetlone jest na zielono kropka cudzysłów title znak równości cudzysłów cudzysłów class znak równości cudzysłów figure podkreślnik img cp minus gallery minus set minus size cudzysłów tabindex znak równości cudzysłów 0 cudzysłów aria minus haspopup znak równości cudzysłów true cudzysłów role znak równości cudzysłów img cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik picture zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny figcaption class znak równości cudzysłów figure podkreślnik caption cudzysłów data minus editor minus disabled znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów figure podkreślnik caption podkreślnik bibliography cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów ref minus minus before cudzysłów zamknij nawias ostrokątny Źródło dwukropek otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny span lang znak równości cudzysłów en cudzysłów zamknij nawias ostrokątny Contentplus otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny kropka pl Sp kropka z o kropka o kropka przecinek licencja dwukropek CC BY minus SA 3 kropka 0 kropka otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figcaption zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik figure zamknij nawias ostrokątny otwórz nawias ostrokątny span class znak równości cudzysłów dummy minus node cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik span zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik div zamknij nawias ostrokątny otwórz nawias ostrokątny prawy ukośnik section zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4T cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4T cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Porównując inteligentne przeszukiwanie z metodą naiwną przecinek zaoszczędziliśmy cztery porównania kropka Być może nie jest to dużo przecinek jednak różnica zwiększa się wraz ze wzrostem długości tekstu oraz wzorca kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny p id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4U cudzysłów data minus id znak równości cudzysłów DcT6FBT2u podkreślnik pl podkreślnik main podkreślnik podkreślnik 4U cudzysłów class znak równości cudzysłów has minus icon minus container animation minus ready animated cudzysłów zamknij nawias ostrokątny Algorytm wyszukiwania wzorca w tekście z wykorzystaniem tablicy dopasowań wygląda następująco kropka Warto zaznaczyć przecinek że działa on zarówno dla tablicy dopasowań metody MP przecinek jak i KMP przecinek jednak tablica znaleziona algorytmem KMP jest po prostu bardziej wydajna kropka Jako otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny W otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny oznaczono wzorzec przecinek a jako otwórz nawias ostrokątny code style znak równości cudzysłów white minus space dwukropek pre średnik cudzysłów data minus inline znak równości cudzysłów cudzysłów zamknij nawias ostrokątny S otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny – przeszukiwany tekst kropka otwórz nawias ostrokątny prawy ukośnik p zamknij nawias ostrokątny otwórz nawias ostrokątny div class znak równości cudzysłów cp minus editor minus alt wcag minus alternative minus text sr minus only has minus icon minus container animation minus ready animated cudzysłów data minus editor minus no minus parse znak równości cudzysłów cudzysłów lang znak równości cudzysłów pl cudzysłów zamknij nawias ostrokątny Linia 1 kropka funkcja szukajAlgorytmemKMP otwórz nawias okrągły W przecinek S zamknij nawias okrągły kropka otwórz nawias ostrokątny prawy ukośnik code zamknij nawias ostrokątny.
Linia 28. Linia 2 kropka T znak równości budowaTablicyKMP otwórz nawias okrągły W zamknij nawias okrągły kropka.
Linia 29. Linia 3 kropka b znak równości 0 kropka.
Linia 30. Linia 4 kropka dla i znak równości 0 przecinek 1 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły S zamknij nawias okrągły minus 1 wykonuj dwukropek kropka.
Linia 31. Linia 5 kropka dopóki b zamknij nawias ostrokątny minus 1 i W otwórz nawias kwadratowy b zamknij nawias kwadratowy wykrzyknik znak równości S otwórz nawias kwadratowy i zamknij nawias kwadratowy wykonuj dwukropek kropka.
Linia 32. Linia 6 kropka b znak równości T otwórz nawias kwadratowy b zamknij nawias kwadratowy kropka.
Linia 33. Linia 7 kropka b plus znak równości 1 kropka.
Linia 34. Linia 8 kropka jeżeli b znak równości znak równości długość otwórz nawias okrągły W zamknij nawias okrągły dwukropek kropka.
Linia 35. Linia 9 kropka zwróć i minus długość otwórz nawias okrągły W zamknij nawias okrągły plus 1 kropka.
Linia 36. Linia 10 kropka zwróć minus 1 kropka.
Linia 37. kratka kratka Słownik.
funkcja budowaTablicyKMP(W)
rozmiarT = długość(W) + 1
stwórz tablicę T o długości rozmiarT
poz = -1
T[0] = -1
// dla każdego kolejnego prefiksu wzorca
dla i = 1, 2, ..., rozmiarT - 1 wykonuj:
// dopóki możesz znaleźć dłuższy prefikso-sufiks
dopóki poz > -1 i W[poz] != W[i - 1] wykonuj:
poz = T[poz]
poz += 1
// usprawnienie
// jeżeli element występujący po znalezionym
// prefikso-sufiksie jest taki sam jak po prefiksie
jeżeli i == rozmiarT - 1 LUB W[i] != W[poz]
// zapisz szerokość znalezionego prefikso-sufiksu
T[i] = poz
w przeciwnym wypadku
// kolejny element tablicy będzie tym samym,
// co element na pozycji równej szerokości
// prefikso-sufiksu
T[i] = T[poz]
zwróć T</code><div class="codemirror-holder" data-editor-no-parse=""><div class="CodeMirror cm-s-default" translate="no"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 4px; left: 34px;"><textarea style="position: absolute; bottom: -1em; padding: 0px; width: 1px; height: 1em; min-height: 1em; outline: none;" wrap="off" autocorrect="off" autocapitalize="none" spellcheck="false" readonly="" tabindex="0"></textarea></div><div class="CodeMirror-vscrollbar" tabindex="-1" cm-not-content="true" style="display: block; bottom: 0px; width: 18px; visibility: hidden;"><div style="min-width: 1px; height: 786px;"></div></div><div class="CodeMirror-hscrollbar" tabindex="-1" cm-not-content="true" style="height: 18px; visibility: hidden;"><div style="height: 100%; min-height: 1px; width: 0px;"></div></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1" draggable="true"><div class="CodeMirror-sizer" style="margin-left: 30px; margin-bottom: 0px; border-right-width: 50px; min-height: 766px; min-width: 577.35px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div style="position: relative; outline: none;" role="presentation"><div class="CodeMirror-measure"><pre class="CodeMirror-line-like"><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-cursors"><div class="CodeMirror-cursor" style="left: 4px; top: 0px; height: 28.0667px;"> </div></div><div class="CodeMirror-code" role="presentation" style=""><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation">funkcja budowaTablicyKMP(W)</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> rozmiarT = długość(W) + 1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> stwórz tablicę T o długości rozmiarT</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> poz = -1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> T[0] = -1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span cm-text=""></span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span class="cm-tab" role="presentation" cm-text=" "> </span>// dla każdego kolejnego prefiksu wzorca</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> dla i = 1, 2, ..., rozmiarT - 1 wykonuj:</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> <span class="cm-tab" role="presentation" cm-text=" "> </span>// dopóki możesz znaleźć dłuższy prefikso-sufiks</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> dopóki poz > -1 i W[poz] != W[i - 1] wykonuj:</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> poz = T[poz]</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> poz += 1</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span cm-text=""></span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span class="cm-tab" role="presentation" cm-text=" "> </span><span class="cm-tab" role="presentation" cm-text=" "> </span>// usprawnienie</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> </span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> // jeżeli element występujący po znalezionym </span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">17</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> // prefikso-sufiksie jest taki sam jak po prefiksie</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">18</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span class="cm-tab" role="presentation" cm-text=" "> </span><span class="cm-tab" role="presentation" cm-text=" "> </span>jeżeli i == rozmiarT - 1 LUB W[i] != W[poz]</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">19</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> <span class="cm-tab" role="presentation" cm-text=" "> </span>// zapisz szerokość znalezionego prefikso-sufiksu</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">20</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> T[i] = poz</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">21</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> w przeciwnym wypadku</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">22</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> <span class="cm-tab" role="presentation" cm-text=" "> </span>// kolejny element tablicy będzie tym samym,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">23</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> // co element na pozycji równej szerokości</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">24</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> // prefikso-sufiksu</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">25</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> T[i] = T[poz]</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">26</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"><span cm-text=""></span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -30px;" aria-hidden="true"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 21px;">27</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation"> zwróć T</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 50px; width: 1px; border-bottom: 0px solid transparent; top: 766px;"></div><div class="CodeMirror-gutters" style="height: 816px; left: 0px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 29px;"></div></div></div></div></div></pre></figure><h2 data-id="DcT6FBT2u_pl_main__5B" id="DcT6FBT2u_pl_main__5B" class="has-icon-container animation-ready animated">Wykorzystanie tablicy częściowych dopasowań <span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="" data-specifier-type-main=""><span data-alternative=""></span><span data-value=""></span></span></span></h2><p id="DcT6FBT2u_pl_main__4N" data-id="DcT6FBT2u_pl_main__4N" class="has-icon-container animation-ready animated">Dlaczego budujemy tablicę częściowych dopasowań? Wyobraźmy sobie prosty przykład, w którym metodą naiwną próbujemy znaleźć dopasowanie wzorca (<code style="white-space: pre;" data-inline="">AAB</code>) w tekście (<code style="white-space: pre;" data-inline="">AAAAAAB</code>). Dopasowania zaznaczamy na zielono. Czerwonym kolorem oznaczamy te próby, które kończą się niepowodzeniem.</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R1Tz3dbWp8KYW</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R1Tz3dbWp8KYW" data-id="DcT6FBT2u_pl_main__4Q" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__4Q"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia szukanie wzorca : AAB, w ciągu liter: AAAAAAB. <br> Na samej górze umieszczono ciąg liter: AAAAAAB. <br> Poniżej znajduje się 15 linii gdzie: AAB przesuwane jest o jedną literę względem AAAAAAB. <br> W linii pierwszej: A podświetlone jest na zielono. <br> <br> W linii drugiej: drugie A podświetlone jest na zielono. <br> W linii trzeciej: B podświetlone jest na czerwono. <br> W linii czwartej: A podświetlone jest na zielono. <br> W linii piątej: drugie A podświetlone jest na zielono. <br> W linii szóstej: B podświetlone jest na czerwono. <br> W linii siódmej: A podświetlone jest na zielono. <br> W linii ósmej: drugie A podświetlone jest na zielono. <br> W linii dziewiątej: B podświetlone jest na czerwono. <br> W linii dziesiątej: A podświetlone jest na zielono. <br> W linii jedenastej: drugie A podświetlone jest na zielono. <br> W linii dwunastej: B podświetlone jest na czerwono. <br> W linii trzynastej: A podświetlone jest na zielono. <br> W linii czternastej: drugie A podświetlone jest na zielono. <br> W linii piętnastej: B podświetlone jest na zielono.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R1Tz3dbWp8KYW/1665413747/2Y8WGNwA0fgX9tdZJ2xkeVaTFjjKl6iZ.png" data-lightbox="677d0c75ac587" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R1Tz3dbWp8KYW/1665413747/2Y8WGNwA0fgX9tdZJ2xkeVaTFjjKl6iZ.png" alt="Ilustracja przedstawia szukanie wzorca : AAB, w ciągu liter: AAAAAAB. Na samej górze umieszczono ciąg liter: AAAAAAB. Poniżej znajduje się 15 linii gdzie: AAB przesuwane jest o jedną literę względem AAAAAAB. W linii pierwszej: A podświetlone jest na zielono. W linii drugiej: drugie A podświetlone jest na zielono. W linii trzeciej: B podświetlone jest na czerwono. W linii czwartej: A podświetlone jest na zielono. W linii piątej: drugie A podświetlone jest na zielono. W linii szóstej: B podświetlone jest na czerwono. W linii siódmej: A podświetlone jest na zielono. W linii ósmej: drugie A podświetlone jest na zielono. W linii dziewiątej: B podświetlone jest na czerwono. W linii dziesiątej: A podświetlone jest na zielono. W linii jedenastej: drugie A podświetlone jest na zielono. W linii dwunastej: B podświetlone jest na czerwono. W linii trzynastej: A podświetlone jest na zielono. W linii czternastej: drugie A podświetlone jest na zielono. W linii piętnastej: B podświetlone jest na zielono." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__4R" data-id="DcT6FBT2u_pl_main__4R" class="has-icon-container animation-ready animated">Już po pierwszej próbie dopasowania widoczne jest, że kolejną próbę dopasowania możemy rozpocząć, pomijając sprawdzenie pierwszego znaku. Wiemy bowiem, że drugi znak jest taki sam jak pierwszy, a drugi w tym miejscu już pasował. Optymalne dopasowywanie wyglądałoby w następujący sposób:</p><section data-block-name="ResourceElement" data-block-resolved-by="media" data-editor-block="" class="has-icon-container animation-ready animated"><span data-editor-params=""><span data-specifier-resolvedby="" data-specifier-type="media" data-specifier-type-main=""><span data-alternative=""></span><span data-value="">R1I5GNluWq20I</span></span></span><div data-editor-block-content=""><span class="dummy-node" data-editor-no-parse=""></span><figure class="figure image cp-image " data-exercise-level="" data-resource-id="R1I5GNluWq20I" data-id="DcT6FBT2u_pl_main__4S" data-editor-no-parse="" data-resource-status="" id="DcT6FBT2u_pl_main__4S"><div class="cp-editor-alt" aria-hidden="true" style="display: none" data-editor-no-parse="" lang="pl">Ilustracja przedstawia szukanie wzorca : AAB, w ciągu liter: AAAAAAB. <br> Na samej górze umieszczono ciąg liter: AAAAAAB. <br> Poniżej znajduje się 11 linii gdzie: AAB przesuwane jest o jedną literę względem AAAAAAB. <br> W linii pierwszej: A podświetlone jest na zielono. <br> <br> W linii drugiej: drugie A podświetlone jest na zielono. <br> W linii trzeciej: B podświetlone jest na czerwono. <br> W linii czwartej: drugie A podświetlone jest na zielono. <br> W linii piątej: B podświetlone jest na czerwono. <br> W linii szóstej: drugie A podświetlone jest na zielono. <br> W linii siódmej: B podświetlone jest na czerwono. <br> W linii ósmej: drugie A podświetlone jest na zielono. <br> W linii dziewiątej: B podświetlone jest na czerwono. <br> W linii dziesiątej: drugie A podświetlone jest na zielono. <br> W linii jedenastej: B podświetlone jest na zielono.</div><div class="image-link image-fullscreen-trigger" href="https://static.zpe.gov.pl/portal/f/res-minimized/R1I5GNluWq20I/1665413748/110DIOvHq3Rkst9T9j2sifz2B5joTOYn.png" data-lightbox="677d0c75ad70d" data-title="<div class="figcaption_content" data-editor-disabled></div><div class="figure_caption_bibliography" data-editor-no-parse><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div>"><picture><span class="sr-only">Kliknij, aby uruchomić podgląd</span><img src="https://static.zpe.gov.pl/portal/f/res-minimized/R1I5GNluWq20I/1665413748/110DIOvHq3Rkst9T9j2sifz2B5joTOYn.png" alt="Ilustracja przedstawia szukanie wzorca : AAB, w ciągu liter: AAAAAAB. Na samej górze umieszczono ciąg liter: AAAAAAB. Poniżej znajduje się 11 linii gdzie: AAB przesuwane jest o jedną literę względem AAAAAAB. W linii pierwszej: A podświetlone jest na zielono. W linii drugiej: drugie A podświetlone jest na zielono. W linii trzeciej: B podświetlone jest na czerwono. W linii czwartej: drugie A podświetlone jest na zielono. W linii piątej: B podświetlone jest na czerwono. W linii szóstej: drugie A podświetlone jest na zielono. W linii siódmej: B podświetlone jest na czerwono. W linii ósmej: drugie A podświetlone jest na zielono. W linii dziewiątej: B podświetlone jest na czerwono. W linii dziesiątej: drugie A podświetlone jest na zielono. W linii jedenastej: B podświetlone jest na zielono." title="" class="figure_img cp-gallery-set-size" tabindex="0" aria-haspopup="true" role="img"></picture></div><figcaption class="figure_caption" data-editor-disabled=""><div class="figure_caption_bibliography" data-editor-no-parse=""><span lang="pl"><span class="ref--before"> Źródło: </span><span lang="en">Contentplus</span>.pl Sp. z o.o., licencja: CC BY-SA 3.0. </span></div></figcaption></figure><span class="dummy-node" data-editor-no-parse=""></span></div></section><p id="DcT6FBT2u_pl_main__4T" data-id="DcT6FBT2u_pl_main__4T" class="has-icon-container animation-ready animated">Porównując inteligentne przeszukiwanie z metodą naiwną, zaoszczędziliśmy cztery porównania. Być może nie jest to dużo, jednak różnica zwiększa się wraz ze wzrostem długości tekstu oraz wzorca.</p><p id="DcT6FBT2u_pl_main__4U" data-id="DcT6FBT2u_pl_main__4U" class="has-icon-container animation-ready animated">Algorytm wyszukiwania wzorca w tekście z wykorzystaniem tablicy dopasowań wygląda następująco. Warto zaznaczyć, że działa on zarówno dla tablicy dopasowań metody MP, jak i KMP, jednak tablica znaleziona algorytmem KMP jest po prostu bardziej wydajna. Jako <code style="white-space: pre;" data-inline="">W</code> oznaczono wzorzec, a jako <code style="white-space: pre;" data-inline="">S</code> – przeszukiwany tekst.</p><div class="cp-editor-alt wcag-alternative-text sr-only has-icon-container animation-ready animated" data-editor-no-parse="" lang="pl">Linia 1. funkcja szukajAlgorytmemKMP otwórz nawias okrągły W przecinek S zamknij nawias okrągły.
Linia 2. T znak równości budowaTablicyKMP otwórz nawias okrągły W zamknij nawias okrągły.
Linia 3. b znak równości 0.
Linia 4. dla i znak równości 0 przecinek 1 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły S zamknij nawias okrągły minus 1 wykonuj dwukropek.
Linia 5. dopóki b zamknij nawias ostrokątny minus 1 i W otwórz nawias kwadratowy b zamknij nawias kwadratowy wykrzyknik znak równości S otwórz nawias kwadratowy i zamknij nawias kwadratowy wykonuj dwukropek.
Linia 6. b znak równości T otwórz nawias kwadratowy b zamknij nawias kwadratowy.
Linia 7. b plus znak równości 1.
Linia 8. jeżeli b znak równości znak równości długość otwórz nawias okrągły W zamknij nawias okrągły dwukropek.
Linia 9. zwróć i minus długość otwórz nawias okrągły W zamknij nawias okrągły plus 1.
Linia 10. zwróć minus 1.
## Słownik