lauantai, 7. marraskuu 2026

Проверяем решение тестами: сортировка слиянием

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

Задача

Реализовать сортировку слиянием — устойчивый алгоритм с гарантированной сложностью O(n log n).

Решение


def merge_sort(arr: list[int]) -> list[int]:
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)


def merge(left: list[int], right: list[int]) -> list[int]:
    result = []
    i = j = 0
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            result.append(left[i]); i += 1
        else:
            result.append(right[j]); j += 1
    return result + left[i:] + right[j:]


print(merge_sort([5, 2, 4, 6, 1, 3]))

Как это работает

Список делится пополам до кусков по одному элементу, затем соседние куски сливаются в отсортированные последовательности. Слияние двух отсортированных списков линейно.

Пример работы


[1, 2, 3, 4, 5, 6]

Сложность

O(n log n) по времени всегда, O(n) по памяти.

Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.


assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай

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

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

---

Related:

- Sarka - Skate Girl 14 : Photos de charme et collectif Sarka-Spip - Rae Rockhold Sex Tape: Watch Rae Rockhold OnlyFans Leaked Video - carre-otis-wild-orchid-1989-60fps - 陈苏霖系列 - 十一陈苏霖大尺度国产电影盯射榨精 - Рассматриваем задачу: вычисление факториала - Ловушки новичков при решении: подсчёт частот слов - https://paper.wf/petra1967log/south-asian-sex-154655875411554321-thinkhealthy-bio - https://paper.wf/laura1971log/pov-evening-sex-with-pregnant-wife - Несколько вариантов решения: проверка анаграмм - Rinhee Collection - Premium Hentai Art & Cosplay Gallery - Изучаем задачу: сумма цифр числа - katharina amalia fuck - Типичные ошибки при решении: числа Фибоначчи - annemi sikti hikaye - Diva Flawless OnlyFans Nude Photos and Video Leaks - Медленно и подробно: бинарный поиск - Несколько вариантов решения: наибольший общий делитель - ai脱衣 - Пошаговый разбор: вычисление факториала - g 林 - Типичные ошибки при решении: наибольший общий делитель - Juliet Summer Hot Lesbian Action and Video Gallery

lauantai, 7. marraskuu 2026

Пошаговый разбор: вычисление факториала

Медленный разбор помогает понять код, а не просто скопировать его.

Задача

Вычислить факториал натурального числа n: n! = 1 · 2 · … · n, а 0! = 1. Самая первая задача на циклы в учебнике.

Решение


def factorial(n: int) -> int:
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result


print(factorial(6))

Как это работает

Аккумулятор result умножается на числа от 2 до n. Итеративное решение предпочтительнее рекурсивного: оно не переполняет стек вызовов.

Пример работы


720

Сложность

O(n) по времени, O(1) по памяти.

Разбор по шагам

1. Шаг 1. Входные данные. Проверяем, что приходит в функцию, и какие значения считаются корректными. 2. Шаг 2. Основной цикл. Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации. 3. Шаг 3. Результат. Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

---

Related:

- Girl Wallpapers Aesthetic – Cute Soft Girl HD Wallpapers & Backgrounds - Пошаговый разбор: проверка палиндрома - 게이섹스 - marti marti 98 - strongdarcy - Рассматриваем задачу: наибольший общий делитель - metiska - Типичные ошибки при решении: наибольший общий делитель - افلام سكس مميزه - Проверяем решение тестами: возведение в степень - angelmarr leaks - private telegram photos - toamonimoni - 天下布魔cg - Решаем и тестируем: удаление дубликатов из списка - Brazzez - Best Brazzers Compilation: MILF, Big Ass, Anal & Creampie - Milftoon порно комиксы мама и сын смотреть онлайн бесплатно - https://paper.wf/emmahoffmann73log/tango-premium-ifsa - claweddrip - 官琪 91 - Пишем решение с тестами: бинарный поиск - avop-137 - Girl Wallpapers Aesthetic – Cute Soft Girl HD Wallpapers & Backgrounds - anxious panda omegle videos - Walking through the Euclidean algorithm for GCD

perjantai, 6. marraskuu 2026

Рассматриваем задачу: максимум и минимум списка

Разберём задачу, которая встречается практически в каждом учебнике по программированию.

Задача

Найти максимальный и минимальный элементы списка за один проход.

Решение


def min_max(arr: list[int]) -> tuple[int, int]:
    lo = hi = arr[0]
    for x in arr[1:]:
        if x < lo:
            lo = x
        elif x > hi:
            hi = x
    return lo, hi


print(min_max([4, 7, 1, 9, 3]))

Как это работает

Один проход по списку: каждое число сравнивается с текущими минимумом и максимумом. Это вдвое быстрее двух отдельных проходов.

Пример работы


(1, 9)

Сложность

O(n) по времени, O(1) по памяти.

Это решение удобно как отправная точка для экспериментов: попробуйте изменить входные данные и проследить за поведением кода.

---

Related:

- Медленно и подробно: решето Эратосфена - Рассматриваем задачу: числа Фибоначчи - celine dept sexy - Oedy9 Gallery: Missy Luv Amateur Blonde Fucked Hard After Sixty Nine - 포켓몬 야짤 - Пишем решение с тестами: решето Эратосфена - Meeuxym Porn Gallery Featuring BBW MILF Photo Moments - Типичные ошибки при решении: переворот строки - chavellabarbie - monique-cash-in-zanes-jump-off-2013 - wohnstift beethoven veranstaltungen - Рассматриваем задачу: вычисление факториала - 黑客门AV女神上原瑞穗无修正无码高清母带流出完整版 2024年12月最新更新珍贵未公开影像资料全网独家首发 - Типичные ошибки при решении: вычисление факториала - lioqueenn - Arina Lura Nude - Sexy Model Photos - хотвайф - türbanlı isimsiz - valeria negurenko - Maxima Sahar Nude Leaks: OnlyFans Photos and Videos - Ловушки новичков при решении: подсчёт частот слов - Типичные ошибки при решении: бинарный поиск - 100 Top NN Models - Emma Atkins and Sisi Rose Gallery - 泽井芽衣 - cuteli占星猫

perjantai, 6. marraskuu 2026

Пошаговый разбор: проверка палиндрома

Медленный разбор помогает понять код, а не просто скопировать его.

Задача

Дана строка s. Определить, читается ли она одинаково слева направо и справа налево, без учёта регистра и пробелов.

Решение


def is_palindrome(s: str) -> bool:
    cleaned = ''.join(ch.lower() for ch in s if ch.isalnum())
    return cleaned == cleaned[::-1]


print(is_palindrome("А роза упала на лапу Азора"))  # True
print(is_palindrome("python"))                      # False

Как это работает

Сначала строка очищается от пробелов и знаков препинания методом isalnum(), затем сравнивается с перевёрнутой копией [::-1].

Пример работы


True
False

Сложность

O(n) по времени и O(n) по памяти.

Разбор по шагам

1. Шаг 1. Входные данные. Проверяем, что приходит в функцию, и какие значения считаются корректными. 2. Шаг 2. Основной цикл. Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации. 3. Шаг 3. Результат. Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

---

Related:

- Ловушки новичков при решении: подсчёт частот слов - melisaxoxo - 十 六 夜 淚 - suzukamuscle - Пошаговый разбор: среднее значение списка - skibidi toilet astro duchess - sexuele voorlichting 1991 full movie - jusigris nudes - xcidwo - Частые ошибки при решении: сумма цифр числа - porno egresadas desnudas - Типичные ошибки при решении: бинарный поиск - Изучаем задачу: максимум и минимум списка - سكس عربي في السيارة – صور نيك في المواصلات مع محجبات - cfnmmovies - Несколько вариантов решения: проверка анаграмм - Bokep Bocil Topeng Ungu - Purple Mask Schoolgirl Porn - metal family rule 34 - mycam-hot профіль pornchat.stream, вебкам секс відео та чат - Пишем решение с тестами: решето Эратосфена

torstai, 5. marraskuu 2026

Проверяем решение тестами: проверка числа на простоту

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

Задача

Определить, является ли число n простым. Достаточно проверять делители до квадратного корня из n.

Решение


def is_prime(n: int) -> bool:
    if n < 2:
        return False
    for d in range(2, int(n ** 0.5) + 1):
        if n % d == 0:
            return False
    return True


print(is_prime(29))

Как это работает

Если у числа есть делитель, больший корня, то у него есть и парный меньший. Поэтому перебор до √n гарантированно находит любой составной делитель.

Пример работы


True

Сложность

O(√n) по времени, O(1) по памяти.

Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.


assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай

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

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

---

Related:

- zistopia - akt.vicineko.cim - 顾林x - Типичные ошибки при решении: переворот строки - video sarah ardhelia - 不贞岛 漫画 - for pollyfans - фиксики r34 - Проверяем решение тестами: возведение в степень - Ловушки новичков при решении: подсчёт частот слов - paradisebirds - island boys sucking dick - xxx hd reap - Пишем решение с тестами: проверка палиндрома - r34 poppy playtime - Manvi Chugh XXX Clip, Hot Web Series & Porn Videos - 溫室氣體盤查 標準 - Два подхода: сортировка слиянием - Два способа решения: решето Эратосфена - tanushka_lapina nude - Пошаговый разбор: сумма цифр числа - Разбираем задачу: подсчёт частот слов - katsoless-sf - Fidan Hoca Ifşa Anlat Hocam Anlat Porno Izle Türk - Рассматриваем задачу: вычисление факториала - kinger x caine