# Writing tests for anagram checking (part 24a3)

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

## Задача

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

## Решение

```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://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/derpixon-kemono-party-ed9913.pdf) · [правках](https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-3e08be.pdf) · [минимум](https://statics.pancake.vn/web-media-264/95/01/c4/90/37ac6a7921ddaece87391e1edb97aa32ce21bc77ff1c35088f57fab9.pdf) · [Проверка](https://kappa.lol/hWlxKg) · [одинаковой](https://www.imagefap.com/pictures/14229870/cachorro-engatado-no-cuzinho-v-iacute-deo-de-zoofilia-amador) · [Хорошая](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [последовательности](https://sway.cloud.microsoft/zqYYV6sBAcwHPncW) · [видно](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [ломается](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [случай](https://stopmagazin.sk/wallpaper+moses+parting+the+red+sea?f=linkcentre) · [python](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/fibonacci-oshibki-mvs8a5ia.md) · [ошибки](https://blog.spikyhair.club/ozf247e4/comonun) · [становится](https://airevaquero.com/nude+daily+pics?f=linkcentre) · [анаграммами](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/margo-from-despicable-me-naked-6f18e9.pdf) · [Решение](https://privatebin.devol.it/?0d74814a788e9d52#2zPTu1YeM5hBc4LaX1Lap9S4X11k79CBYVzWSwi3PNbA) · [Определить](https://jaflysilve.freeflarum.com/d/10740-10740-starsessions-lisa-nude-star-sessions-model-photo-gallery) · [включая](https://pastebin.com/login) · [добавим](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2vTNivJsbVFCyPTYqBGaKBCaHkKs/issues/b420236c1e821a957ee103e21b3cdef0e22e4d93) · [добавлением](https://rpgwebgame.com/kateumara?f=instapaper) · [крайние](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/max-love-bnbigus-efebfd.pdf) · [являются](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/secret-stars-taso-e6f6ee.pdf) · [Пример](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-7af541.pdf)

