Thought dump

Presenting my thoughts, stories and ideas to the world

5th November 2026

Шаг за шагом: подсчёт частот слов

Пройдём задачу шаг за шагом — такой формат удобен для первого знакомства с алгоритмами.

Задача

Дан текст. Посчитать, сколько раз встречается каждое слово, и вывести слова по убыванию частоты.

Решение


from collections import Counter


def word_count(text: str) -> list[tuple[str, int]]:
    words = text.lower().split()
    return Counter(words).most_common()


print(word_count("a b a c b a"))

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

Текст разбивается на слова, Counter подсчитывает вхождения за линейное время, а most_common() сразу возвращает отсортированный список пар.

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


[('a', 3), ('b', 2), ('c', 1)]

Сложность

O(n) по времени по числу слов, O(k) по памяти по числу уникальных.

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

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

Читая чужой код, повторите тот же мысленный разбор по шагам — это самый быстрый способ научиться.


Related:

Шаг за шагом: переворот строки

cool giannis antetokounmpo wallpaper

kara dlanio

t先生系列

nn liliana model

小池 栄子 ヌード 写真

href="//paper.wf/nina1983log/mrvine"> href="//workshopeb1353.notepin.co/palindrome-oshibki">Частые ошибки при решении: проверка палиндрома

Пошаговый разбор: шифр Цезаря

3rd November 2026

Пошаговый разбор: шифр Цезаря

Пройдём задачу шаг за шагом — такой формат удобен для первого знакомства с алгоритмами.

Задача

Реализовать шифр Цезаря: сдвинуть каждую букву строки на фиксированное число позиций в алфавите.

Решение


def caesar(text: str, shift: int) -> str:
    result = []
    for ch in text:
        if ch.isalpha():
            base = ord('A') if ch.isupper() else ord('a')
            result.append(chr((ord(ch) - base + shift) % 26 + base))
        else:
            result.append(ch)
    return ''.join(result)


print(caesar("Hello, World!", 3))

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

Буква переводится в номер внутри алфавита, к номеру прибавляется сдвиг, а остаток от деления на 26 обеспечивает «зацикливание» алфавита. Прочие символы не меняются.

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


Khoor, Zruog!

Сложность

O(n) по времени, O(n) по памяти под результат.

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

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

Читая чужой код, повторите тот же мысленный разбор по шагам — это самый быстрый способ научиться.


Related:

Решаем и тестируем: переворот строки

31 vakti

jucmis

Частые ошибки при решении: сортировка слиянием

2026釜山旅遊攻略:五天四夜自由行景點美食交通住宿懶人包

Ezra Vandan OnlyFans – Exclusive Leaked Photos & Pics

Типичные ошибки при решении: наибольший общий делитель

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

victoria hernandez porn

nita starsession

3rd November 2026
3rd November 2026
3rd November 2026
3rd November 2026
3rd November 2026
3rd November 2026
3rd November 2026