Słowa elfickie

Zadanie 9 z 13 · rozdział 15Trudność: 2 z 3rekurencjanapisy

Treść zadania

Słowem elfickim nazywamy napis, w którym każda z liter słowa elf (czyli e, l i f) występuje co najmniej raz, w dowolnej kolejności i na dowolnych pozycjach.

Napisz rekurencyjną funkcję czy_elfickie(slowo, litery="elf"), która sprawdza, czy każda litera z napisu litery występuje w napisie slowo. Program wczytuje słowo i wypisuje wynik sprawdzenia.

Dane wejściowe

Jedna linia: słowo złożone z małych liter alfabetu łacińskiego (a–z).

Dane wyjściowe

Prawda, jeśli słowo jest elfickie, w przeciwnym razie Fałsz.

Ograniczenia

  • długość słowa: od 1 do 100 znaków

Uwagi

  • Sprawdź, czy w słowie występuje pierwsza litera z litery, i wywołaj funkcję dla pozostałych liter (litery[1:]). Gdy litery jest pusty, wszystkie litery zostały znalezione.
  • Samo szukanie litery w słowie też możesz zapisać rekurencyjnie: litera występuje w słowie, jeśli jest jego pierwszym znakiem albo występuje w reszcie słowa.

Przykład

Wejście
reflektor
Wyjście
Prawda

W słowie reflektor występują litery e, l i f.

Zasady obowiązujące w rozdziale 15

Poniższe zadania uczą rekurencji: funkcja rozwiązuje problem, wywołując samą siebie dla mniejszych danych, aż dojdzie do przypadku bazowego, w którym odpowiedź jest znana od razu (np. $0! = 1$).

Konwencje wspólne:

  • Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście. Program wczytuje dane, wywołuje funkcję opisaną w treści i wypisuje wynik (gotowy szkielet znajdziesz w sekcji „Kod startowy”).
  • Rozwiązanie musi być rekurencyjne. Właściwe obliczenia wykonuje funkcja, która wywołuje samą siebie. Nie używaj w niej pętli for ani while, ani gotowych narzędzi, które wykonają całą pracę za Ciebie (np. sum(), pow(), operatora **, math.factorial(), list.index()). Sprawdzarka porównuje tylko wynik, ale celem zadań jest ćwiczenie rekurencji.
  • Każda funkcja rekurencyjna potrzebuje przypadku bazowego (kiedy przestajemy się wywoływać) i kroku rekurencyjnego (wywołania dla mniejszego problemu). Bez przypadku bazowego program przerwie działanie błędem RecursionError.
  • Python ogranicza głębokość rekurencji (domyślnie do około 1000 zagnieżdżonych wywołań), dlatego dane w zadaniach są małe.
  • Liczby naturalne liczymy od zera: $0, 1, 2, \dots$
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”.

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
elf
Oczekiwane wyjście
Prawda

Test 2

Nie uruchomiono
Wejście
elzbieta
Oczekiwane wyjście
Fałsz

Test 3

Nie uruchomiono
Wejście
flet
Oczekiwane wyjście
Prawda

Test 4

Nie uruchomiono
Wejście
kalafior
Oczekiwane wyjście
Fałsz

Test 5

Nie uruchomiono
Wejście
a
Oczekiwane wyjście
Fałsz

Test 6

Nie uruchomiono
Wejście
felieton
Oczekiwane wyjście
Prawda

Test 7

Nie uruchomiono
Wejście
lew
Oczekiwane wyjście
Fałsz
Uruchom z własnymi danymi