# Writing tests for anagram checking (part 109b)

Посмотрим на задачу глазами разработчика: сначала решение, затем убеждаемся в его корректности.

## Задача

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

## Решение

```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://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/cherish-ams-model-87d3eb.pdf) · [assert](https://kappa.lol/fXCDO9) · [разработчика](https://paste2.org/mkGp88ea) · [анаграммами](https://discuss.tchncs.de/post/65441269) · [Сортировка](https://stills34648.mataroa.blog/blog/b/) · [крайние](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-6d2406.pdf) · [Проверка](https://discuss.tchncs.de/post/65441200) · [задачу](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [сначала](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/milly69-f15e53.pdf) · [задач](https://lauradubois560.overblog.fr/2026/10/rape-xxx-movi.html) · [работает](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [базовая](https://paste.rs/iQxzc) · [случаи](https://wuchu-pub.com/uploads/20261020/808f6778e7566b2795d6b08a4a8c021c.pdf) · [наглядное](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/palindrome-razbor-mvg0pkmm.md) · [словарь](https://sway.cloud.microsoft/BmKJ7yJgOdL3kefj) · [Сложность](https://news-ctl-posts.hashnode.dev/walking-through-bubble-sort-part-7659) · [Решение](https://ecency.com/@martinnemec5998/where-to-find-hot-gay-furry-porn-comics-f0b5d9) · [Пример](https://rentry.co/gallery-204665) · [одинаковые](https://jaflysilve.freeflarum.com/d/4578-4578-brimad) · [включая](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sally-dinosaur-onlyfans-7aefc6.pdf) · [проверять](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/andie-elle-onlyfans-naked-b9ee79.pdf) · [убеждаемся](https://yakihonne.com/article/naddr1qvzqqqr4gupzqpgp96wsqcjshrs6xwaknh4wzjjhumqzc4tmp57fqc0cs74xhf3hqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknzefcvc6kgc33943rydry956xyvee95urwvf495er2cmz893nsc33xpjrv8hss0n) · [затем](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg)

