# Writing tests for anagram checking (part 56ea)

Решение без тестов быстро ломается, поэтому добавим к задаче простые проверки.

## Задача

Определить, являются ли две строки анаграммами: состоят из одних и тех же букв с одинаковой частотой.

## Решение

```python
def are_anagrams(a: str, b: str) -> bool:
    return sorted(a.lower()) == sorted(b.lower())


print(are_anagrams("listen", "silent"))
```

## Как это работает

Анаграммы дают одинаковые отсортированные последовательности букв. Сортировка — простое и наглядное решение; словарь частот дал бы ту же проверку без сортировки.

## Пример работы

```text
True
```

## Сложность

O(n log n) из-за сортировки, O(n) по памяти.


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

С добавлением проверок решение становится самодокументируемым — сразу видно, что код делает.

**Читайте также:**

[ошибки](https://news-ctl-posts.hashnode.dev/understanding-palindrome-check-part-1a82) · [минимум](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sana-ca0c86.pdf) · [работает](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sana-1a4389.pdf) · [из-за](https://blogfreely.net/nataliarussell2/jonflashtv-bbc-public-flashing-and-dick-flash-compilation) · [Пример](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/therealmorenita-adc9c0.pdf) · [простые](https://news-ctl-posts.hashnode.dev/pitfalls-of-bracket-sequence-validation-part-a6ab) · [sorted(a.lower](https://drop.xtrafrancyz.net/selif/syptgeqzl0.pdf) · [наглядное](https://news-ctl-posts.hashnode.dev/solving-and-testing-binary-search-part-d905) · [памяти](https://curated97258.mataroa.blog/blog/19/) · [Сложность](https://hey.xyz/posts/xzp9rf0fatvd9p5sz) · [анаграммами](https://radicle.network/nodes/index.radicle.garden/rad%3Az4BEuFPrjnJR83HMTYVG3C2yg94iW/issues/206fd1218e978308039a3f28328b36c62cc37d49) · [становится](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/tail-vore-hentai-b56bc1.pdf) · [Такой](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/merge-sort-tests-mvegxnbk.md) · [добавим](https://alohacafeparis.com/amc%C4%B1k+g%C3%B6rselleri?f=instapaper) · [базовая](https://paper.wf/juliarichter79log/website-for-pinay-sex-scandal) · [словарь](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [отсортированные](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [работы](https://danielsokolov2.wixsite.com/my-site-1/post/thattoyotachick) · [sorted(b.lower](https://paper.wf/sofiarichter62log/japon-erotik-sex-filmleri) · [Проверка](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/stories-about-weddings-83a1ae.pdf) · [нескольких](https://wuchu-pub.com/uploads/20261019/0a559e62c88734908efb9ccd8ef1e336.pdf) · [silent](https://kappa.lol/zErNi9) · [проверки](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [строки](https://articlescad.com/ridhima-tiwari-ullu-384879.html) · [второй](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/muchitinasub-891420.pdf) · [примерах](https://statics.pancake.vn/web-media-264/ea/b8/f7/45/74a1aba51ec3924de55df8fb919ca7239caa93fbd9ce41153acacad0.pdf)

