# Writing tests for anagram checking (part e584)

Разберём решение и сразу накроем его тестами — это хороший стиль работы с кодом.

## Задача

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

## Решение

```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  # и второй случай
```

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

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

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

[простое](https://ecency.com/@jannovotny8793/travesti-porno-t-rk-asena-acar-ve-en-seksi-trans-videolar-93418e) · [удобны](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/anagram-shagi-mvocowcy.md) · [частотой](https://articlescad.com/lillias-right-video-curvy-model-nude-art-photography-396823.html) · [последовательности](https://gal33506.carrd.co/) · [требуют](https://montage28689.mataroa.blog/blog/fitnarad-onlyfans/) · [строки](https://privatebin.devol.it/?732428239d073e62#FEmM2UegtxroLWrEB888vf4bjRS7BmGqAEqeh7JgAKfr) · [Задача](https://t5.pics/%E4%B8%83%E6%9D%A1+%E9%93%83+%E9%A6%99?f=instapaper) · [проверка](https://ninamichel227.overblog.fr/2026/10/rae-lil-black-crooked-throne-part-2.html) · [наглядное](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/skibidi-toilet-r34-95b3f0.pdf) · [Проверка](https://kappa.lol/J2PO1V) · [Сложность](https://radicle.network/nodes/seed.pipapo.org/rad%3Az2QYZ9aRLeYKmYYHeqYL4bkz6BobY/issues/f5e5352047be8295a394daaa71b8b70deefa4e63) · [проверять](https://ampopular.com/av4us+videos?f=linkcentre) · [одинаковой](https://pen.absturztau.be/oz4e004f/bokep-oklinfia) · [правках](https://radicle.network/nodes/index.radicle.garden/rad%3Az3PoWU1fMSytvpvY2EJWSaTYQNW4z/issues/64062c9ba130c8398cae2049958a94e6a5dbdc37) · [одинаковые](https://discuss.tchncs.de/post/65439704) · [примерах](https://kappa.lol/EnkT8m) · [сразу](https://milhench.com/post-an-event/#pending) · [состоят](https://sway.cloud.microsoft/LtipHllAVa5b1M0E) · [являются](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Тесты](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [python](https://yakihonne.com/article/naddr1qvzqqqr4gupzpza9lqevp5hnqav3czwaduf5y0xf07j46m2mjwnsd74pt24t2qplqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknscfhvd3nsdfh95mxveps956xvdmz95uryenx95exxvrzxycrsdf4vccrz2pg0zd) · [словарь](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/egoistewc-2cb043.pdf) · [sorted(b.lower](https://yakihonne.com/article/naddr1qvzqqqr4gupzpm02k9k4gu68wsed3dn093g0yma34jly3nj82u2ff75vut03qt69qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkgvp4xa3njc3h94snsdnz956xxenz95uxvwpc95cnxenx8y6ryv3nvgukgwaflvq) · [привычка](https://blog.spikyhair.club/oz79847a/ntsb-fy-grf-ltbdyl-shhd-fydyw-bh) · [случаи](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g)

