Rotacje napisów

Zadanie 5 z 9 · rozdział 25Trudność: 2 z 3stringrotationsubstring

Treść zadania

Otrzymujesz dwa napisy A i B. Sprawdź, czy B jest rotacją (przesunięciem cyklicznym) napisu A, czyli czy da się go otrzymać, przenosząc pewną liczbę początkowych znaków A (być może zero) na koniec. Na przykład rotacjami napisu abcd są abcd, bcda, cdab i dabc.

Napisy różnej długości nigdy nie są swoimi rotacjami, a każdy napis jest rotacją samego siebie.

Dane wejściowe

  • 1. linia: napis A
  • 2. linia: napis B

Dane wyjściowe

Prawda, jeśli B jest rotacją A, w przeciwnym razie Fałsz.

Ograniczenia

  • 1 ≤ |A|, |B| ≤ 1000

Uwagi

  • Każda rotacja A jest podnapisem napisu A + A. Wystarczy więc porównać długości i sprawdzić, czy B występuje w A + A.

Przykład

Wejście
malpka
pkamal
Wyjście
Prawda

pkamal powstaje z malpka przez przeniesienie początkowych mal na koniec.

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

Test 2

Nie uruchomiono
Wejście
abcd
acbd
Oczekiwane wyjście
Fałsz

Test 3

Nie uruchomiono
Wejście
abc
abcd
Oczekiwane wyjście
Fałsz

Test 4

Nie uruchomiono
Wejście
aaaa
aaaa
Oczekiwane wyjście
Prawda

Test 5

Nie uruchomiono
Wejście
kot
kot
Oczekiwane wyjście
Prawda

Test 6

Nie uruchomiono
Wejście
abab
baba
Oczekiwane wyjście
Prawda

Test 7

Nie uruchomiono
Wejście
aab
abb
Oczekiwane wyjście
Fałsz

Test 8

Nie uruchomiono
Wejście
Kajak
kKaja
Oczekiwane wyjście
Prawda

Test 9

Nie uruchomiono
Wejście
Kajak
kajak
Oczekiwane wyjście
Fałsz

Test 10

Nie uruchomiono
Wejście
baabaabababbbbbaaaabaaababaabaabbaabbbaabbbbabaaaababaabaaaaabbabbaaabbaaaabbbababbabaaabaaaaaaabbaababbbbbbaaaababaababaabaaabaaaabbbaabbbaaaaaabbaabaabaaaaaababaabbaabbbbababbabbababaabbaabbbbbbbaaaaabbabbbbbbabbbaaaababaabababbababaabbaababaababaaabbbbbababaaabbbbbababbabaabbaaaaabbaaababbabbaaaabbaabaabaaabbbbbbaabbaabbbbaaabbabbbbaaabaaaababaaababbbabaabaaabbababbaabaaaabbaaaabaaababaaabbaaabbaaababababbbaaaabbbbaaabaaabbbaabbbaababbbbbabbaabababaababbbababbaaaabababbbbaaaaaabbabbbbaabbabaabaaabababbbabbbababaabaaaababababbbbabababaaabaababbaabaaaaabaababbabbbbbbbabbaabaabbaaaabaabaabababbabbbaabaaabaaabbbaaabbababbaaaabbabbbbabaabaabbabbaababbbbbaaababaabaabaabbbabbbbbbabaabbababbbababbbabbbabaaaabaaabaaabbabaaaaabbbaababbbababbabbbaabbbbabbabaabababbaabababbbaababbbbbbbbaaababbaaaba
abaabaaaababababbbbabababaaabaababbaabaaaaabaababbabbbbbbbabbaabaabbaaaabaabaabababbabbbaabaaabaaabbbaaabbababbaaaabbabbbbabaabaabbabbaababbbbbaaababaabaabaabbbabbbbbbabaabbababbbababbbabbbabaaaabaaabaaabbabaaaaabbbaababbbababbabbbaabbbbabbabaabababbaabababbbaababbbbbbbbaaababbaaababaabaabababbbbbaaaabaaababaabaabbaabbbaabbbbabaaaababaabaaaaabbabbaaabbaaaabbbababbabaaabaaaaaaabbaababbbbbbaaaababaababaabaaabaaaabbbaabbbaaaaaabbaabaabaaaaaababaabbaabbbbababbabbababaabbaabbbbbbbaaaaabbabbbbbbabbbaaaababaabababbababaabbaababaababaaabbbbbababaaabbbbbababbabaabbaaaaabbaaababbabbaaaabbaabaabaaabbbbbbaabbaabbbbaaabbabbbbaaabaaaababaaababbbabaabaaabbababbaabaaaabbaaaabaaababaaabbaaabbaaababababbbaaaabbbbaaabaaabbbaabbbaababbbbbabbaabababaababbbababbaaaabababbbbaaaaaabbabbbbaabbabaabaaabababbbabbbab
Oczekiwane wyjście
Prawda

Test 11

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