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

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

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

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

[делает](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/11/ay-en-elik-onlyfans-ifsa-e44bd2.pdf) · [Хорошая](https://sway.cloud.microsoft/IFLKBXsE0VkBlpJY) · [python](https://mega.nz/file/TlomlKaC#u2mc4neq4I0lzghW_oe9WpI9doq8PTTCQGNZnjnRl8M) · [работает](https://news-ctl-posts.hashnode.dev/walking-through-binary-search-mwc4jemm) · [сначала](https://paste2.org/h4aN46xO) · [assert](https://dev.to/devnote2319/idempotent-publishing-jobs-84uy2-3em1) · [silent](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-qdl63-5pm) · [проверять](https://jaflysilve.freeflarum.com/d/24110-24110-romantic-porn-gifs-slow-passionate-scenes-and-hot-romance) · [вызова](https://statics.pancake.vn/web-media-264/d0/ca/0c/41/71634c7b46ceecb411ecf49e1975f491e2496915dcdbbc9471624450.pdf) · [Задача](https://rentry.org/nonudegirl-555209) · [из-за](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/hannah-becker-of-leak-342021.pdf) · [одинаковые](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2zV7DDhrfP2u3D9eqsKSJrLVptRP/issues/f41f0907decaf0badc3ee914722a8276dc61900e) · [памяти](https://rentry.org/nudes-da-deolane-bezerra-654729) · [частотой](https://sunduchek.by/av4+us+similar+sites?f=instapaper) · [Сложность](https://u.pcloud.link/publink/show?code=XZIwffJZiyYygXjxq8LoVdAFD8mAXF2sXSN7) · [тестами](https://dev.to/devnote2319/idempotent-publishing-jobs-3g6b7-2g3k) · [Определить](https://pastelink.net/ofy2qna9) · [Решение](https://cryptoradar.com/exchanges/bit2me) · [случайной](https://igorzielinski2.wixsite.com/my-site-1/post/twistus) · [частот](https://jaflysilve.freeflarum.com/d/24171-24171-ella-graves-erome-exclusive-anal-photos-and-video-collection) · [простое](https://gal74889.carrd.co/) · [становится](https://dev.to/devnote2319/idempotent-publishing-jobs-6avwq-2mld) · [sorted(b.lower](https://blogfreely.net/sarah-yakovlev/camila-araujo-leak-nude-masturbation-video-and-onlyfans-scandal) · [привычка](https://dev.to/devnote2319/idempotent-publishing-jobs-f832j-561i) · [работы](https://pastelink.net/vc9q1ix1) · [Такой](https://blogfreely.net/nataliarussell2/eva-ionesco-nude-vintage-photos-and-penthouse-archive) · [Анаграммы](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/quicksort-dva-sposoba-mwe4h1ok.md) · [проверка](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-dmof8-55dc) · [крайние](https://dev.to/devnote2319/idempotent-publishing-jobs-otj2e-gin)

