Okno na planszy
Wyszukiwanie wzorca w tekście - Informatyka - liceum klasa 2, zakres rozszerzony (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 - liceum klasa 2, zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.