Okno na planszy

Wyszukiwanie wzorca w tekście metodą naiwną - Informatyka - technikum klasa 1 (Python)

Animacja pokazuje metodę naiwną krok po kroku. Strzałka pod tekstem wskazuje pozycję `i`, a litery aktualnego okna (`m` znaków od `i`) są **pomarańczowe**. Gdy okno pasuje do wzorca, jego litery zostają **zielone** do końca. Po sprawdzeniu ostatniej pozycji `n - m` animacja się zatrzymuje (`world.stop()`). Spróbuj innego tekstu i wzorca, np. `"banananas"` i `"ana"`: znalezione wystąpienia nachodzą na siebie.

def show(text, y):
    row = []
    for i, ch in enumerate(text):
        letter = Sprite()
        letter.text = ch
        letter.size = 12
        letter.color = (51, 65, 85)
        letter.position = (-90 + 10 * i, y)
        world.add(letter)
        row.append(letter)
    return row

text = "abrakadabra"
pattern = "abra"
row = show(text, 20)

class Window(Sprite):
    def __init__(self):
        self.image = 16
        self.size = 10
        self.position = (-90, 5)
        self.i = 0
        self.wait = 0
        self.found = []

    def update(self):
        self.wait += 1
        if self.wait < 20:
            return
        self.wait = 0
        m = len(pattern)
        if self.i > len(text) - m:
            world.stop()
            return
        if text[self.i:self.i + m] == pattern:
            self.found.extend(range(self.i, self.i + m))
        for k, letter in enumerate(row):
            if k in self.found:
                letter.color = (22, 163, 74)
            elif self.i <= k < self.i + m:
                letter.color = (234, 88, 12)
            else:
                letter.color = (51, 65, 85)
        self.position = (-90 + 10 * self.i, 5)
        self.i += 1

world.add(Window())
world.start()

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Informatyka - technikum klasa 1·Zaloguj się, aby zapisać postęp na koncie.