Python
2019-04-03
Arkusz z zadaniem znajdziesz tutaj:
Matura_Zbiór_zadań_Informatyka
Repozytorium z danymi i rozwiązaniem:
Github
W pliku dane_napisy.txt znajduje się 1000 par napisów, z których każdy jest długości od 2 do 20 znaków, składających się z wielkich liter: A, B, C, D, E, F, G, H, I, J. Każda para napisów jest zapisana w osobnym wierszu, a napisy oddzielone są pojedynczym znakiem odstępu.
Na początku trzeba jakoś zinterpretować dane z pliku. Ja zdecydowałem się na przechowywanie danej linii w tablicy dwóch elementów.
Każdą z takich par przechowuje tablica anagrams. Trzeba pamiętać, że zawiera ona jeszcze nie przetworzone dane. Czyli nie koniecznie anagramy.
Napis nazywamy jednolitym, jeżeli wszystkie jego litery są takie same. Przykładem takiego napisu jest AAAA. Podaj liczbę wierszy zawierających parę napisów jednolitych, które są wzajemnie swoimi anagramami.
W pętli wyciągamy każdą parę i na początku porównujemy ich długości.
Jeżeli długości są takie same to wtedy można porównać wszystkie litery. Jeżeli warunek jest spełniony to zwiększamy licznik.
Podaj liczbę wierszy, które zawierają napisy będące wzajemnie swoimi anagramami.
Na potrzeby tego i następnego zadania definiujemy funkcję isAnagram(). Porównuje ona długości oraz elementy (litery) za pomocą zbiorów (set()).
Funkcja główna polega na zliczeniu spełnionych warunków i zwróceniu liczby.
Podaj największą liczbę k taką, że w pliku znajduje się k napisów, z których każde dwa są wzajemnie swoimi anagramami.
W ostatnim przypadku musimy rozdzielić nasze pary na pojedyncze słowa. Te zostają wprowadzone do tablicy allWords
Później za pomocą podwójnej pętli bierzemy jeden wyraz z allWords i porównujemy go ze wszystkimi elementami tej tablicy.
Jeżeli znajdziemy więcej tych samych anagramów niż obecnie to ustawimy na taką wartość zmienną k.
Teraz już tylko wywołać nasz kod!
Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊
Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.
Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.