Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

Sprawdzenie, czy podane ciągi są anagramami


powrót

Dwa wyrazy są anagramami, jeśli zbudowane są z tych samych zbiorów liter. Na przykład pary wyrazów: $$adam,\ dama$$ $$algorytm,\ logarytm$$są anagramami, a wyrazy$$abcd,\ abce$$nie są.

Zadanie

Wczytaj dwa wyrazy w oddzielnych wierszach i wypisz tak, jeśli są one anagramami lub nie w przeciwnym razie.

Wejście

Dwa wyrazy złożone wyłącznie z małych liter łacińskiego alfabetu, nie dłuższe niż 1000 znaków każdy, zapisane w oddzielnych wierszach.

Wyjście

Napis tak lub nie w zależności, czy łańcuchy reprezentują anagramy, czy nie.

Rozwiązanie pod część praktyczną

Jeśli dwa wyrazy są anagramami, to po uporządkowaniu liter w każdym z nich, powinny wyglądać identycznie..

# **********algorytm.edu.pl***************
def czy_anagramy(a, b):
    return "tak" if sorted(a) == sorted(b) else "nie"

# głowna część programu
a = input()
b = input()
print(czy_anagramy(a, b))
Rozwiązanie pod część teoretyczną

W tym rozwiązaniu będziemy zliczać każdą z liter pierwszego wyrazu, a następnie będziemy zmniejszać wystąpienia każdej z liter drugiego wyrazu. Jeśli ostatecznie wystąpienie każdej z liter będzie równe 0, to znaczy, że wyrazy reprezentują anagramy.

# **********algorytm.edu.pl***************
def czy_anagramy(a, b):
    lista = [0] * 123 # tu będziemy przechowywać wystąpienia liter
    for i in range(len(a)): lista[ord(a[i])] += 1 # zliczam litery ciągu a
    for i in range(len(b)): lista[ord(b[i])] -= 1 # zmniejszam wystąpienia liter ciągu b
    for i in range(ord('a'), ord('z')+1): # sprawdzam, czy ostatecznie liczba liter jest taka sama
        if lista[i] != 0: return "nie"
    return "tak"

# głowna część programu
a = input()
b = input()
print(czy_anagramy(a, b))