Najdłuższy wspólny przedrostek

Zadanie 7 z 9 · rozdział 25Trudność: 3 z 3stringprefixlist

Treść zadania

Otrzymujesz n napisów. Znajdź ich najdłuższy wspólny przedrostek, czyli najdłuższy napis, od którego zaczynają się wszystkie podane napisy. Jeśli napisy nie mają wspólnego przedrostka (np. zaczynają się od różnych liter), wynikiem jest napis pusty — wypisz wtedy pustą linię.

Dane wejściowe

  • 1. linia: n — liczba napisów
  • kolejne n linii: napisy (każdy w osobnej linii)

Dane wyjściowe

Jedna linia: najdłuższy wspólny przedrostek (albo pusta linia).

Ograniczenia

  • 1 ≤ n ≤ 100
  • każdy napis ma od 1 do 100 znaków

Uwagi

  • Przy jednym napisie wynikiem jest cały ten napis.
  • Wygodnie jest zacząć od pierwszego napisu jako kandydata i skracać go, porównując po kolei z każdym kolejnym napisem.

Przykład

Wejście
3
Remolada
Remux
Remmy
Wyjście
Rem

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
3
flower
flow
flight
Oczekiwane wyjście
fl

Test 2

Nie uruchomiono
Wejście
2
dog
race
Oczekiwane wyjście
(brak)

Test 3

Nie uruchomiono
Wejście
1
samotny
Oczekiwane wyjście
samotny

Test 4

Nie uruchomiono
Wejście
3
internet
inter
interval
Oczekiwane wyjście
inter

Test 5

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

Test 6

Nie uruchomiono
Wejście
2
Abc
abc
Oczekiwane wyjście
(brak)

Test 7

Nie uruchomiono
Wejście
3
programowanie
program
programista
Oczekiwane wyjście
program

Test 8

Nie uruchomiono
Wejście
3
ab
a
abc
Oczekiwane wyjście
a

Test 9

Nie uruchomiono
Wejście
40
zaawansowane_programowanie_x
zaawansowane_programowanie_yzxyz
zaawansowane_programowanie_xyx
zaawansowane_programowanie_xz
zaawansowane_programowanie_yzz
zaawansowane_programowanie_xx
zaawansowane_programowanie_yyyzyy
zaawansowane_programowanie_yzxy
zaawansowane_programowanie_x
zaawansowane_programowanie_xyxxx
zaawansowane_programowanie_xyz
zaawansowane_programowanie_
zaawansowane_programowanie_yyxz
zaawansowane_programowanie_
zaawansowane_programowanie_
zaawansowane_programowanie_yxxz
zaawansowane_programowanie_x
zaawansowane_programowanie
zaawansowane_programowanie_yxz
zaawansowane_programowanie_zxzzzz
zaawansowane_programowanie_y
zaawansowane_programowanie_zzy
zaawansowane_programowanie_zx
zaawansowane_programowanie_zzy
zaawansowane_programowanie_
zaawansowane_programowanie_zzyxx
zaawansowane_programowanie_
zaawansowane_programowanie_z
zaawansowane_programowanie_
zaawansowane_programowanie_x
zaawansowane_programowanie_xyy
zaawansowane_programowanie_y
zaawansowane_programowanie_xyx
zaawansowane_programowanie_yyxxxx
zaawansowane_programowanie_
zaawansowane_programowanie_zzxz
zaawansowane_programowanie_xx
zaawansowane_programowanie_yyyyx
zaawansowane_programowanie_
zaawansowane_programowanie_x
Oczekiwane wyjście
zaawansowane_programowanie
Uruchom z własnymi danymi