Podmiana słowa w zdaniu

Zadanie 1 z 9 · rozdział 25Trudność: 2 z 3stringreplacesubstring

Treść zadania

Otrzymujesz zdanie S oraz dwa napisy A i B. Zamień wszystkie wystąpienia napisu A w zdaniu na napis B. A może być częścią dłuższych słów — zamieniamy każde wystąpienie podnapisu.

Wystąpienia szukamy od lewej do prawej. Po każdej zamianie szukanie trwa dalej za zamienionym fragmentem, więc wystąpienia nie nakładają się na siebie, a wstawiony napis B nie jest ponownie przeszukiwany. Na przykład w aaa zamiana aa na b daje ba, a w ab zamiana a na aa daje aab.

Dane wejściowe

  • 1. linia: zdanie S
  • 2. linia: napis A (szukany)
  • 3. linia: napis B (wstawiany)

Dane wyjściowe

Jedna linia: zdanie po zamianie.

Ograniczenia

  • 1 ≤ |S| ≤ 1000
  • 1 ≤ |A|, |B| ≤ 100 (żaden z napisów nie jest pusty)

Uwagi

  • Spróbuj nie używać metody replace: przechodź po zdaniu indeksem i i sprawdzaj, czy w tym miejscu zaczyna się A (np. porównując wycinek S[i:i + len(A)] z A). Jeśli tak — dopisz do wyniku B i przeskocz o len(A) znaków; jeśli nie — dopisz bieżący znak i przejdź o jeden dalej.

Przykład

Wejście
Lezy jezy na wiezy
zy
rzy
Wyjście
Lerzy jerzy na wierzy

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 25

Trudniejsze zadania na napisach: samodzielna zamiana i usuwanie fragmentów, przedrostki, kodowanie RLE, rotacje, szukanie najdłuższych powtórzeń i wspólnych fragmentów (programowanie dynamiczne) oraz sprawdzanie nawiasów za pomocą stosu. Spróbuj rozwiązywać je własnymi pętlami, bez gotowych metod w rodzaju replace czy startswith — właśnie o to w nich chodzi.

Konwencje wspólne:

  • Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Program nie wypisuje komunikatów typu „Podaj napis:”. Tekst podany w input("…") jest ignorowany przez sprawdzarkę.
  • Każdy napis zajmuje jedną całą linię wejścia, razem ze spacjami — wczytuj go przez input(), bez strip() i split().
  • Wielkość liter ma znaczenie (A i a to różne znaki), a spacja też jest znakiem.
  • Podnapis to ciągły fragment napisu, np. kot jest podnapisem kotlet, a ket — nie.
  • Pozycje znaków (indeksy) liczymy od 0, tak jak w Pythonie.
  • Odpowiedzi logiczne wypisuj jako Prawda albo Fałsz (o ile zadanie nie mówi inaczej).

Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.

Python uruchomi się w przeglądarce przy pierwszym teście.

Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.

Testy

Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.

Test 1

Nie uruchomiono
Wejście
kot ma kotlet
kot
pies
Oczekiwane wyjście
pies ma pieslet

Test 2

Nie uruchomiono
Wejście
hello hello
lo
X
Oczekiwane wyjście
helX helX

Test 3

Nie uruchomiono
Wejście
aaaa
aa
b
Oczekiwane wyjście
bb

Test 4

Nie uruchomiono
Wejście
aaa
aa
b
Oczekiwane wyjście
ba

Test 5

Nie uruchomiono
Wejście
ab
a
aa
Oczekiwane wyjście
aab

Test 6

Nie uruchomiono
Wejście
Kot i kot
kot
pies
Oczekiwane wyjście
Kot i pies

Test 7

Nie uruchomiono
Wejście
abc
x
y
Oczekiwane wyjście
abc

Test 8

Nie uruchomiono
Wejście
abc
abc
XYZ
Oczekiwane wyjście
XYZ

Test 9

Nie uruchomiono
Wejście
ala ma kota
a m
_
Oczekiwane wyjście
al_a kota
Uruchom z własnymi danymi