# Solving and testing anagram checking

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

## Задача

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

## Решение

```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://posts.workshop-hub.workers.dev/caesar-tests) · [фреймворков](https://blogfreely.net/igorcollins26/bruno-encanto-wallpaper-hd-bruno-madrigal-backgrounds-1z24) · [Анаграммы](https://paper.wf/milafischer89log/seks-zvezdochka) · [return](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/wileycoyotexo-sex-75aeaf.pdf) · [разработчика](https://sway.cloud.microsoft/EQpC9hOMD8C75BXl) · [sorted(a.lower](https://sway.cloud.microsoft/FAfv2reRXICWu5FV) · [случай](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-168el-1d7i) · [sorted(b.lower](https://pen.absturztau.be/ozedf3dc/duygum-fdik-ifsa) · [Хорошая](https://ecency.com/@adamsvoboda1644/porno-olgunlar-e28e04) · [работает](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-4c7be-544k) · [python](https://paper.wf/sofia1971897/estrogenolit-pornolari-czech-hd-porno-izle) · [наглядные](https://paper.wf/nina1981log/turbanli-ciplak-resimler) · [второй](https://paper.wf/annakrause79log/sassy-poonam-xxx-video-hd) · [Задача](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/brackets-oshibki-mw6qauwt.md) · [решение](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/tanya-y-157-f0f2cb.pdf) · [сортировки](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-ljc1x-2dpe) · [Пример](https://ink.synkosmos.org/ozb43123/3d-guro-hentai) · [проверять](https://www.imagefap.com/pictures/14229597/yunyunshiwoya) · [Решение](https://dev.to/devnote2319/idempotent-publishing-jobs-oxu5p-1763) · [задач](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-sjke6-2iip) · [assert](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az3GsX7JJ3jDbavY4eLhC2XeGpkNaJ/issues/5686cbffa2696a1b00cd510e2f305138e9b3b93d) · [минимум](https://ecency.com/@lukasfiala2580/lilianaheartsss-blowjob-c0b79b) · [Сортировка](https://dev.to/devnote2319/idempotent-publishing-jobs-2q4id-53np)

