Znalezienie anagramów w tekście (grupy)

Zadanie 10 z 15 · rozdział 17Trudność: 2 z 3dictanagramystring

Treść zadania

Wczytaj tekst. Znajdź grupy różnych słów, które są swoimi anagramami (składają się z tych samych liter w tej samej liczbie, np. absurd i brudas), nie rozróżniając wielkości liter. Wypisz każdą grupę, która zawiera co najmniej dwa różne słowa.

Dane wejściowe

  • 1. linia: tekst

Dane wyjściowe

  • Każda grupa w osobnej linii: słowa małymi literami, oddzielone pojedynczą spacją, w kolejności pierwszego wystąpienia w tekście.
  • Grupy w kolejności pierwszego wystąpienia ich pierwszego słowa.
  • Jeśli nie ma żadnej grupy — jedna linia Brak anagramów.

Ograniczenia

  • tekst ma od 1 do 300 znaków

Uwagi

  • Słowo to najdłuższy ciąg kolejnych liter; pozostałe znaki rozdzielają słowa. Wielkość liter nie ma znaczenia (Tyran to tyran).
  • Słowo powtórzone w tekście liczy się raz — kot kot nie jest grupą anagramów.
  • Wskazówka: użyj słownika, w którym kluczem są posortowane litery słowa ("".join(sorted(slowo))), a wartością lista słów.

Przykład

Wejście
Tyran Brudas kupił narty. To absurd! Arbuz i burza.
Wyjście
tyran narty
brudas absurd
arbuz burza

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 17

Zadania w tym rozdziale ćwiczą pracę ze słownikami (dict): tworzenie, dodawanie i usuwanie par, zliczanie wystąpień oraz grupowanie danych według klucza.
Każde zadanie (oraz każdy podpunkt) jest osobnym, niezależnym programem: czyta standardowe wejście (stdin) i wypisuje wynik na standardowe wyjście (stdout).

Konwencje wspólne:

  • Dane wczytuj dokładnie w kolejności podanej w sekcji Wejście; jeśli w jednej linii jest kilka wartości — rozbij ją po spacjach.
  • Jeśli wynikiem jest słownik, wypisz go tak, jak robi to print(slownik) w Pythonie: {klucz: wartość, klucz: wartość} — pary oddzielone przecinkiem i spacją, po dwukropku spacja, klucze i wartości napisowe w apostrofach (np. {'ala': 2, 'ma': 1}), liczby bez apostrofów (np. {1: 1, 2: 4}), pusty słownik to {}.
  • Kolejność par w wypisanym słowniku to kolejność, w jakiej klucze były do niego dodawane (tak zachowuje się słownik w Pythonie).
  • 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
rat tar art dog
Oczekiwane wyjście
rat tar art

Test 2

Nie uruchomiono
Wejście
listen silent enlist inlets cat
Oczekiwane wyjście
listen silent enlist inlets

Test 3

Nie uruchomiono
Wejście
Ala ma kota
Oczekiwane wyjście
Brak anagramów

Test 4

Nie uruchomiono
Wejście
Kot kot KOT tok
Oczekiwane wyjście
kot tok

Test 5

Nie uruchomiono
Wejście
kot kot
Oczekiwane wyjście
Brak anagramów

Test 6

Nie uruchomiono
Wejście
Ewa i kot, Wea? Tok! Aew i ok.
Oczekiwane wyjście
ewa wea aew
kot tok

Test 7

Nie uruchomiono
Wejście
To absurd, że tyran Brudas, ten straszliwy bandzior, sprawuje rządy w tym kraju. Burza nad galeria i alergia na narty to żadna zbrodnia, jak bandzior i jego arbuz.
Oczekiwane wyjście
absurd brudas
tyran narty
bandzior zbrodnia
burza arbuz
galeria alergia
Uruchom z własnymi danymi