Python 3.10+ · версия 1.2.2 · без зависимостей

EGEKit
112 функций для подготовки к ЕГЭ

Учебная библиотека Python 3.10+ без внешних зависимостей. 112 функций для тем всех 27 номеров. Это инструменты и шаблоны: условие, диапазон и критерий проверки переносите из конкретной задачи. Автоматического решения любой формулировки и гарантии всех будущих подтипов здесь нет. Все функции доступны под понятными русскими именами; английские варианты также работают.

Перейти к справочнику ↓

Начало работы

Положите egekit.py и егэ.py рядом со своим solution.py либо установите пакет egekit-study версии 1.2.0 и новее. Установка не нужна. Запустите python solution.py в терминале этой папки. Полная инструкция — в README.md.

from егэ import *

print(делители(120))
print(перевести_в_систему(125, 3))
man(делители)                 # Назначение, параметры и пример
man(17)                       # Функции для задания 17
man(по_заданиям=False)         # При необходимости — алфавитный список
man(поиск='простые')           # Поиск в справочнике

Примеры по всем номерам: python examples_ru.py. Отдельный номер: python examples_ru.py --year 2027 23.

Номера и основные функции

Базовая нумерация — 2026. В правом столбце тем указаны изменения проекта ФИПИ 2027.

№Тема 2026Проект 2027С чего начать
1Графы и соответствие вершин—сопоставить_вершины_графов, кратчайшие_расстояния
2Логика и таблицы истинности—таблица_истинности, определить_столбцы_таблицы, следование
3Таблицы и базы данных—прочитать_xlsx, прочитать_ods, соединить_таблицы, сгруппировать_и_вычислить, запрос_к_базе
4Коды и условие Фано—проверка_условия_Фано, допустимые_кодовые_слова, коды_Хаффмана, длина_кодированного_сообщения
5Алгоритмы преобразования чисел—преобразовать_двоичную_запись, перевести_в_систему, найти_значения
6Черепаха и геометрия—вершины_черепахи, внутренние_точки_по_Пику, целые_точки_в_фигурах
7Изображения, звук и передача данных—объём_изображения_в_битах, объём_звука_в_битах, время_передачи
8Комбинаторика и порядок слов—количество_слов, номер_слова, слово_по_номеру, различные_перестановки
9Обработка строк таблицы—характеристики_строки, отобрать_строки
10Поиск в текстовом документеIPv4 и маски сетейтекст_из_docx, количество_вхождений
11Объём хранения идентификаторов—бит_на_символ, объём_хранения_в_байтах
12Редактор и машина Тьюринга—редактор_строк, машина_Тьюринга
13IPv4 и маски сетейИсполнители и количество программсведения_о_сети, количество_ip_по_условию, распределение_ip_по_единицам
14Системы счисления—перевести_в_систему, перевести_из_системы, цифры_числа
15Логические условия и параметры—следование, допустимые_параметры, принадлежит_интервалу
16Рекурсия и рекуррентные формулы—вычислить_рекуррентную_функцию, рекурсивная_функция
17Последовательности, пары и тройки—прочитать_числа, соседние_группы, статистика_соседних_групп
18Робот и пути по таблице—суммы_путей_робота
19Игры: первый ход—анализатор_игры
20Игры: стратегия победы—анализатор_игры
21Игры: неизбежное поражение—анализатор_игры
22Параллельные процессы и зависимости—процессы_из_таблицы, расписание_процессов, активные_процессы, максимум_одновременных_интервалов
23Исполнители и количество программПути в ориентированном графеколичество_программ, количество_программ_через_точки
24Строки, подстроки и выражения—подстрока_не_более, подстрока_ровно, подстрока_не_менее, найти_по_регулярному_выражению
25Делители, простые числа и маски—делители, разложить_на_простые, решето_простых, кратные_по_маске
26Сортировка, выбор и моделирование—выбрать_файлы_для_архива, выбрать_непересекающиеся_интервалы, вложенные_коробки, свободные_места, очередь_обслуживания, журнал_резервных_копий
27Кластеризация и алгоритмы анализа данныхАнализ данных: точки, признаки и энергия частицкластеры_по_расстоянию, центр_по_сумме_расстояний, кластеры_по_размаху_признака, центр_по_медиане_признака; дополнительно — префиксы, остатки, динамика

Как применять функции

Правила, ограничения и частые ошибки

Полный справочник

У каждой функции: сигнатура, назначение, параметры, пример и ограничения. Фильтр ищет по имени и описанию. Номера показывают также смежные вспомогательные алгоритмы.

активные_процессы

Английское имя: active_processes

активные_процессы(schedule, millisecond)

ID процессов, исполняющихся на миллисекунде с номером millisecond, нумерация с 1. schedule — результат расписание_процессов с нулевым началом времени.

Пример: активные_процессы(расписание_процессов({'A':3},{}),3)==['A'].

анализ_путей_в_графе

Английское имя: dag_analysis

анализ_путей_в_графе(graph, start, finish)

Для взвешенного DAG: число путей и min/max их длины; все вершины упорядочивает топологически, циклы — ошибка. O(V+E), без рекурсии; поддерживает отрицательные веса.

Пример: анализ_путей_в_графе({'A':{'B':2},'B':{}},'A','B') == {'count':1,'min':2,'max':2}.

анализатор_игры

Английское имя: game_solver

анализатор_игры(moves, terminal, max_plies)

Функция оценки конечной игры с полной информацией, без ничьих. state — хешируемое состояние; moves(state) — ходы; terminal(state) — уже достигнутая цель. Метки W1/W2 — победа за 1/2 своих хода, L1/L2 — неизбежное поражение, '?' — глубины мало. max_plies — число полуходов; terminal получает 'L0'.

Пример: g=анализатор_игры(lambda s:(s+1,s*2),lambda s:s>=10,4); g(9)=='W1'. Для задач 19 с НЕУДАЧНЫМ первым ходом отдельно проверьте существование хода в W1.

бит_на_символ

Английское имя: bits_per_symbol

бит_на_символ(alphabet_size)

Минимум бит на символ равномерного кода: ceil(log2(N)), точно для больших целых. N=1 даёт 0.

Пример: бит_на_символ(33) == 6.

вершины_черепахи

Английское имя: turtle_vertices

вершины_черепахи(commands, start=(0, 0), heading=0)

Математическая Черепаха без окна: commands — ('F',длина), ('L',градусы), ('R',градусы); heading=0 направлен вправо, 90 вверх. Возвращает вершины ломаной, включая старт.

Пример: вершины_черепахи([('F',3),('L',90),('F',4)]). Повторы заранее разверните умножением списка; перо/дуги не моделируются.

взвешенная_медиана

Английское имя: weighted_median

взвешенная_медиана(points)

Взвешенная медиана на прямой для (координата,вес). Минимизирует сумму вес*расстояние. Возвращает (координата,стоимость), веса >=0 с положительной общей суммой.

Пример: взвешенная_медиана([(0,1),(10,3)]) == (10,10).

вложенные_коробки

Английское имя: nested_boxes

вложенные_коробки(sizes, gap)

Максимальная цепочка одномерных коробок: разница соседних размеров >=gap>0. Возвращает размеры по возрастанию.

Пример: вложенные_коробки([1,2,5,8],3)==[1,5,8]. Для многомерных коробок это правило неприменимо.

внутренние_точки_по_Пику

Английское имя: pick_interior

внутренние_точки_по_Пику(polygon)

Количество строго внутренних решётчатых точек простого многоугольника с ЦЕЛЫМИ вершинами по теореме Пика. Быстро, без перебора. Самопересечения/дыры не поддерживаются.

Пример: внутренние_точки_по_Пику([(0,0),(3,0),(3,3),(0,3)]) == 4.

время_передачи

Английское имя: transmission_seconds

время_передачи(bits, rate, compression=1.0, overhead_bits=0)

Время передачи при rate бит/с. compression — доля оставшихся данных (0.6 = 60%), служебные биты прибавляются после сжатия.

Пример: время_передачи(8000,1000) == 8.

выбрать_непересекающиеся_интервалы

Английское имя: select_intervals

выбрать_непересекающиеся_интервалы(intervals, gap=0)

Максимальное количество непересекающихся интервалов одним исполнителем, жадно по окончанию. gap — пауза между работами.

Пример: выбрать_непересекающиеся_интервалы([(0,2),(1,4),(2,3)]) == [(0,2),(2,3)]. Для максимальной прибыли используйте максимальная_прибыль_интервалов.

выбрать_файлы_для_архива

Английское имя: archive_files

выбрать_файлы_для_архива(sizes, capacity)

Архивирование: максимум файлов, затем максимальный размер одного из выбранных. Возвращает count, max_file, selected. Каждый размер/ёмкость неотрицательны.

Пример: выбрать_файлы_для_архива([2,3,8,9],12)['selected'] == [2,9].

вычислить_рекуррентную_функцию

Английское имя: recurrence_values

вычислить_рекуррентную_функцию(start, stop, initial, rule)

Вычислить рекуррентную функцию снизу вверх на [start,stop]. initial — словарь базовых значений; rule(n,values) видит уже вычисленные значения.

Пример: вычислить_рекуррентную_функцию(2,5,{0:0,1:1},lambda n,f:f[n-1]+f[n-2])[5] == 5. Для обратных зависимостей измените направление в своём цикле.

делители

Английское имя: divisors

делители(n, proper=False)

Все положительные делители положительного n по возрастанию. proper=True исключает 1 и само n (нетривиальные).

Пример: делители(12,True) == [2,3,4,6].

диаметр_набора_точек

Английское имя: diameter

диаметр_набора_точек(points)

Наибольшее расстояние между двумя точками; 0 при менее чем двух точках. Точный полный перебор O(n²), подходит отфильтрованным небольшим наборам.

Пример: диаметр_набора_точек([(0,0),(3,4)])==5.

длина_кодированного_сообщения

Английское имя: encoded_length

длина_кодированного_сообщения(text, codebook)

Длина сообщения в битах по словарю символ:код.

Пример: длина_кодированного_сообщения('ABA', {'A':'0','B':'11'}) == 4.

длина_подмассива_по_остатку

Английское имя: longest_subarray_sum_mod

длина_подмассива_по_остатку(data, modulus, remainder=0)

Длина самого длинного подмассива с нужным остатком суммы, O(n). Возвращает 0 при отсутствии.

Пример: длина_подмассива_по_остатку([1,2,3],3)==3.

допустимые_кодовые_слова

Английское имя: available_codewords

допустимые_кодовые_слова(codes, length)

Все двоичные слова заданной length, совместимые с условием Фано для уже известных codes. Экспоненциальный перебор 2**length.

Пример: допустимые_кодовые_слова(['0'], 2) == ['10','11'].

допустимые_параметры

Английское имя: valid_parameters

допустимые_параметры(parameters, domain, predicate)

Найти A, для которых predicate(A,x) истинно для ВСЕХ x из конечного domain. Для пары переменных domain задайте product(...), а x распакуйте.

Пример: допустимые_параметры(range(10), range(5), lambda a,x:a>=x). Это проверка конечной области, не доказательство для всех целых/вещественных.

журнал_резервных_копий

Английское имя: backup_log

журнал_резервных_копий(records, capacity, deadline='11:59:59')

Модель журнала сервера из демо-2027: records — (ЧЧ:ММ:СС,ID,объём). При переполнении до запроса копируется накопленное; финальный остаток не копируется. Возвращает top_client, backups, top_two_sum. Все передачи учитываются при выборе клиента, при равенстве берётся меньший ID. Копии суммируются только не позднее deadline.

Пример: журнал_резервных_копий([('01:00:00',1,8),('02:00:00',2,4)],10)['top_two_sum']==8.

запрос_к_базе

Английское имя: sqlite_select

запрос_к_базе(path, query, parameters=())

Выполнить запрос к существующей SQLite-базе в режиме только чтения; вернуть кортежи строк.

Пример: запрос_к_базе('data.db', 'SELECT * FROM items WHERE price > ?', (100,)). Не предназначено для XLSX.

кластеры_по_размаху_признака

Английское имя: cluster_by_span

кластеры_по_размаху_признака(items, key, max_span)

Разбить по одномерному признаку key на МИНИМАЛЬНОЕ число кластеров с max(key)-min(key)<=max_span. Сортировка O(n log n), greedy от минимального значения. Это ограничение диаметра, не цепочка соседей.

Пример: кластеры_по_размаху_признака([0,1,2,3],lambda x:x,2)==[[0,1,2],[3]]. Если требуется заданное K, проверьте число кластеров; произвольное разбиение на K не ищется.

кластеры_по_расстоянию

Английское имя: cluster_by_distance

кластеры_по_расстоянию(points, threshold)

Компоненты графа близости: точки связаны, если расстояние <=threshold; связь транзитивна. Это не k-means и не полный DBSCAN. Пространственная сетка ускоряет разреженные данные, худший случай O(n²). Возвращает список кластеров (координаты).

Пример: кластеры_по_расстоянию([(0,0),(1,0),(9,0)],2). Порог выбирайте по условию/визуализации, цепочки могут объединить скопления.

кластеры_по_средним

Английское имя: kmeans

кластеры_по_средним(points, centers, max_steps=100, tolerance=1e-09)

Разделение по ближайшему среднему с заданными начальными centers. Возвращает clusters, centers, converged. Может попасть в локальный минимум; не гарантирует кластеры из условия. Пустой кластер сохраняет свой центр.

Пример: кластеры_по_средним([(0,0),(1,0),(9,0)],[(0,0),(9,0)]). Для финального центра-медоида затем вызовите центр_по_сумме_расстояний.

коды_Хаффмана

Английское имя: huffman_codes

коды_Хаффмана(frequencies)

Построить оптимальный префиксный код по словарю символ:положительная_частота. Для единственного символа код '0'. Не учитывает дополнительно закреплённые кодовые слова.

Пример: коды_Хаффмана({'A':5,'B':2,'C':1}).

количество_ip_по_условию

Английское имя: count_ip

количество_ip_по_условию(address, mask, predicate, include_edges=True, max_addresses=1048576)

Перебрать IPv4-адреса сети и проверить predicate(int_ip). include_edges=True включает сеть и broadcast.

Пример: количество_ip_по_условию('192.168.1.0',24,lambda n:n.bit_count()%2==0). Ограничивает размер сети, чтобы случайно не перебирать миллиарды адресов.

количество_вхождений

Английское имя: count_occurrences

количество_вхождений(text, pattern, whole_word=False, ignore_case=False, overlap=False)

Количество вхождений буквальной строки; whole_word использует границы Unicode-слова, ignore_case игнорирует регистр, overlap разрешает пересечения.

Пример: количество_вхождений('ААА','АА',overlap=True) == 2. Дефисы и апострофы проверяйте по условию.

количество_пар_по_остатку

Английское имя: count_pairs_mod

количество_пар_по_остатку(data, modulus, remainder=0, min_gap=1)

Количество пар индексов i<j, j-i>=min_gap с нужным остатком суммы. min_gap=1 — любые разные элементы. O(n), отрицательные числа допустимы.

Пример: количество_пар_по_остатку([1,2,3,4],3)==2.

количество_пар_с_кратным_произведением

Английское имя: count_pairs_product

количество_пар_с_кратным_произведением(data, divisor, min_gap=1)

Количество пар i<j с j-i>=min_gap и произведением, кратным divisor. Нули/отрицательные поддерживаются. O(n*tau(divisor)), хранит классы gcd.

Пример: количество_пар_с_кратным_произведением([2,3,4],6)==2.

количество_подмассивов_по_остатку

Английское имя: count_subarrays_mod

количество_подмассивов_по_остатку(data, modulus, remainder=0)

Количество непустых непрерывных подмассивов с нужным остатком суммы. O(n) времени, O(min(n,modulus)) памяти; отрицательные числа поддерживаются.

Пример: количество_подмассивов_по_остатку([1,2,3],3)==3.

количество_программ

Английское имя: count_programs

количество_программ(start, finish, commands, allowed, max_states=100000)

Число программ в конечном ациклическом пространстве состояний. commands — функции одного хода; allowed(state) ограничивает область и запреты. Разные команды с одинаковым результатом считаются разными программами. Строит граф и считает без глубокой рекурсии, обнаруживает циклы.

Пример: количество_программ(1,5,[lambda x:x+1,lambda x:x*2],lambda x:1<=x<=5) == 4.

количество_программ_через_точки

Английское имя: count_programs_via

количество_программ_через_точки(start, finish, checkpoints, commands, allowed)

Число программ с посещением checkpoints по порядку: произведение числа путей между контрольными точками. Применять только при строгой монотонности числовых состояний, чтобы промежуточный сегмент не пересёк будущую точку раньше срока.

Пример: количество_программ_через_точки(1,5,[3],[lambda x:x+1],lambda x:1<=x<=5)==1.

количество_путей_в_графе

Английское имя: count_graph_paths

количество_путей_в_графе(graph, start, finish, forbidden=())

Число путей в ориентированном ациклическом графе; graph[u] — соседи. forbidden — запрещённые вершины. Достижимый цикл вызывает ValueError.

Пример: количество_путей_в_графе({'A':['B','C'],'B':['C']},'A','C').

количество_слов

Английское имя: count_words

количество_слов(alphabet, length, predicate=lambda w: True)

Количество слов с повторениями, подходящих под predicate. O(|алфавит|**length).

Пример: количество_слов('01',4,lambda w:w.count('1')==2) == 6.

кратные_по_маске

Английское имя: masked_multiples

кратные_по_маске(mask, divisor, limit, start=1)

Пары (число,частное) для кратных положительному divisor в включительном [start,limit], подходящих маске. Перебор O(limit/divisor).

Пример: кратные_по_маске('1*',7,100) == [(14,2)]. При малом делителе и огромной границе нужен другой перебор.

кратчайшие_расстояния

Английское имя: shortest_paths

кратчайшие_расстояния(graph, start)

Расстояния от start алгоритмом Дейкстры. graph[u] — словарь сосед:неотрицательный_вес; недостижимые вершины имеют inf.

Пример: кратчайшие_расстояния({'A':{'B':3},'B':{}},'A').

лучшая_сумма_выбора_по_остатку

Английское имя: best_choice_mod

лучшая_сумма_выбора_по_остатку(groups, modulus, remainder=0, maximize=True)

Выбрать ровно одно число из каждой группы, оптимизируя сумму с нужным остатком. Динамика O(число_групп*modulus*размер_группы). Возвращает сумму или None.

Пример: лучшая_сумма_выбора_по_остатку([[1,2],[3,4]],3)==6. Для выбора двух из трёх передайте группы попарных сумм.

максимальная_прибыль_интервалов

Английское имя: weighted_intervals

максимальная_прибыль_интервалов(jobs)

Максимальная суммарная прибыль непересекающихся работ (start,end,profit), границы [start,end). Возвращает прибыль; O(n log n).

Пример: максимальная_прибыль_интервалов([(0,2,5),(1,3,9),(2,4,5)]) == 10.

максимальная_сумма_пары_по_остатку

Английское имя: max_pair_sum_mod

максимальная_сумма_пары_по_остатку(data, modulus, remainder=0, min_gap=1)

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

Пример: максимальная_сумма_пары_по_остатку([1,2,3,4],3)==6.

максимальная_сумма_подмассива

Английское имя: max_subarray

максимальная_сумма_подмассива(data)

Максимальная сумма непустого подмассива (Кадане), O(n), O(1) памяти. None для пустого входа.

Пример: максимальная_сумма_подмассива([-5,-2,-7]) == -2.

максимальная_сумма_подмассива_по_остатку

Английское имя: max_subarray_sum_mod

максимальная_сумма_подмассива_по_остатку(data, modulus, remainder=0)

Максимальная сумма непустого подмассива с заданным остатком; None, если нет. O(n), работает с отрицательными.

Пример: максимальная_сумма_подмассива_по_остатку([1,2,3],3)==6.

максимальная_сумма_рюкзака

Английское имя: knapsack

максимальная_сумма_рюкзака(weights, capacity)

Максимальная достижимая сумма весов <=capacity, каждый предмет используется один раз. Битовая динамика, память O(capacity) бит.

Пример: максимальная_сумма_рюкзака([3,5,8],10) == 8. Не возвращает состав набора.

максимум_одновременных_интервалов

Английское имя: peak_overlap

максимум_одновременных_интервалов(intervals)

Максимум одновременно активных полуоткрытых интервалов [start,end), например процессов или посетителей. В момент окончания ресурс освобождается.

Пример: максимум_одновременных_интервалов([(0,3),(2,4),(3,5)]) == 2.

машина_Тьюринга

Английское имя: turing

машина_Тьюринга(tape, transitions, state='q0', head=0, blank='_', halt=('halt',), max_steps=1000000)

Симулятор машины Тьюринга. tape — строка или {индекс:символ}; transitions[(состояние,символ)]=(новый_символ,сдвиг,новое_состояние), сдвиг -1/0/1. Возвращает tape/head/state/steps.

Пример: машина_Тьюринга('1',{('q0','1'):('0',1,'halt')}). Отсутствие перехода — ошибка, не неявная остановка.

минимальная_длина_с_нужной_суммой

Английское имя: min_window_sum_at_least

минимальная_длина_с_нужной_суммой(data, target)

Минимальная длина непустого подмассива с суммой >=target для НЕОТРИЦАТЕЛЬНЫХ чисел. O(n), None если нет.

Пример: минимальная_длина_с_нужной_суммой([2,1,4,2],6)==2.

найти_значения

Английское имя: search_values

найти_значения(values, predicate)

Вернуть все элементы конечного values, удовлетворяющие predicate.

Пример: найти_значения(range(100), lambda n:n%7==0). Диапазон нужно обосновать условием.

найти_по_регулярному_выражению

Английское имя: regex_matches

найти_по_регулярному_выражению(text, pattern, overlap=False)

Список (начало, конец_исключая, текст) совпадений регулярного выражения. overlap=True ищет и пересекающиеся совпадения через match в каждой позиции; на длинных строках это может быть O(n²).

Пример: найти_по_регулярному_выражению('12+34 A','[0-9]+(?:[+*][0-9]+)*'). Регулярку и запрет ведущих нулей задавайте по условию.

номер_слова

Английское имя: word_rank

номер_слова(word, alphabet)

Номер слова с 1 в полном списке слов той же длины с повторениями. Порядок задаёт alphabet; символы алфавита уникальны.

Пример: номер_слова('БА','АБ') == 3.

общий_префикс_ip

Английское имя: common_prefix

общий_префикс_ip(addresses)

Максимальная общая длина префикса IPv4 для непустого списка адресов.

Пример: общий_префикс_ip(['192.168.1.1','192.168.1.2']) == 30.

объём_звука_в_битах

Английское имя: audio_bits

объём_звука_в_битах(seconds, sample_rate, depth, channels=1)

Объём несжатого звука: секунды × частота Гц × глубина бит × каналы. Возвращает биты.

Пример: объём_звука_в_битах(10,48000,16,2).

объём_изображения_в_битах

Английское имя: image_bits

объём_изображения_в_битах(width, height, colors)

Объём несжатого растра в битах, без заголовка и выравнивания строк.

Пример: объём_изображения_в_битах(100,100,256) == 80000.

объём_хранения_в_байтах

Английское имя: storage_bytes

объём_хранения_в_байтах(symbols, alphabet_size, records=1, round_each=True)

Объём равномерного кодирования в байтах. round_each=True округляет каждый объект отдельно, False — весь поток.

Пример: объём_хранения_в_байтах(10,33,100) == 800. Служебные поля прибавляйте отдельно.

определить_столбцы_таблицы

Английское имя: match_truth_columns

определить_столбцы_таблицы(variables, rows, predicate)

Найти перестановки переменных по неполной таблице. Каждая строка: n столбцов + F; None — неизвестно. Требует разных полных строк, учитывает неоднозначность.

Пример: определить_столбцы_таблицы('xy', [(0,1,0)], lambda x,y:x and y).

отобрать_строки

Английское имя: filter_rows

отобрать_строки(rows, predicate, start=1)

Список (номер_строки, строка) по условию predicate(row). start задаёт первый номер.

Пример: отобрать_строки([[1,2],[3,3]], lambda r:len(set(r))==1).

очередь_обслуживания

Английское имя: service_queue

очередь_обслуживания(arrivals, servers, max_wait=None)

FCFS-очередь к одинаковым серверам. arrivals — (приход,длительность); servers>=1. При ожидании >max_wait клиент уходит (None). Результат в исходном порядке: (номер_сервера_с_1,начало,конец) либо None.

Пример: очередь_обслуживания([(0,5),(1,2)],1)==[(1,0,5),(1,5,7)]. Для задач с выбором сервера по номеру/без ожидания правила надо изменить.

перевести_в_систему

Английское имя: to_base

перевести_в_систему(n, base)

Перевести неотрицательное целое в строку основания 2–36.

Пример: перевести_в_систему(31,16) == '1F'.

перевести_из_системы

Английское имя: from_base

перевести_из_системы(text, base)

Значение записи в основании 2–36; неизвестные цифры сначала замените.

Пример: перевести_из_системы('101',2) == 5.

площадь_многоугольника

Английское имя: polygon_area

площадь_многоугольника(polygon)

Площадь простого многоугольника по формуле Гаусса. Вершины идут по контуру; повтор последней первой необязателен. Для самопересечений вернёт модуль ориентированной площади, а не площадь закраски.

Пример: площадь_многоугольника([(0,0),(3,0),(3,4)]) == 6.

подстрока_без_повторов

Английское имя: longest_distinct

подстрока_без_повторов(text)

Максимальная длина подстроки без повторяющихся символов, O(n).

Пример: подстрока_без_повторов('ABCADE') == 5.

подстрока_не_более

Английское имя: longest_at_most

подстрока_не_более(text, predicate, k)

Максимальная длина подстроки, содержащей не более k символов, удовлетворяющих predicate(ch). O(n).

Пример: подстрока_не_более('ABACA',lambda c:c=='A',1)==3.

подстрока_не_менее

Английское имя: shortest_at_least

подстрока_не_менее(text, predicate, k)

Минимальная длина подстроки с минимум k отмеченными символами, None если нет; k=0 даёт 0. O(n).

Пример: подстрока_не_менее('ABACA',lambda c:c=='A',2)==3.

подстрока_ровно

Английское имя: longest_exactly

подстрока_ровно(text, predicate, k)

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

Пример: подстрока_ровно('ABACA',lambda c:c=='A',2)==4.

подстрока_с_условием_на_соседей

Английское имя: longest_adjacent

подстрока_с_условием_на_соседей(text, compatible)

Максимальная длина подстроки, где каждая соседняя пара удовлетворяет compatible(a,b). O(n).

Пример: подстрока_с_условием_на_соседей('AABAB',lambda a,b:a!=b) == 4.

преобразовать_двоичную_запись

Английское имя: binary_transform

преобразовать_двоичную_запись(n, transform)

Передать двоичную запись n без '0b' в transform и прочитать полученную запись как двоичное число.

Пример: преобразовать_двоичную_запись(5, lambda s:s+'0') == 10. Правило дописывания задаётся по условию.

префиксные_суммы

Английское имя: prefix_sums

префиксные_суммы(data)

Префиксные суммы с нулём в начале. Сумма data[l:r] равна p[r]-p[l].

Пример: префиксные_суммы([2,3,-1]) == [0,2,5,4].

принадлежит_интервалу

Английское имя: interval_contains

принадлежит_интервалу(x, left, right, closed=True)

Принадлежность закрытому [left,right] или открытому (left,right) интервалу.

Пример: принадлежит_интервалу(3,1,3) == True.

проверка_условия_Фано

Английское имя: is_prefix_free

проверка_условия_Фано(codes)

Проверить условие Фано для набора непустых двоичных слов. Дубликаты недопустимы.

Пример: проверка_условия_Фано(['0','10','11']) == True.

простое_число

Английское имя: is_prime

простое_число(n)

Проверка простоты целого числа пробными делителями до sqrt(n), O(sqrt(n)); n<2 не простое.

Пример: простое_число(97) == True.

процессы_из_таблицы

Английское имя: processes_from_rows

процессы_из_таблицы(rows, skip=1)

Преобразовать строки [ID,длительность,'предшественник;предшественник'] в durations/dependencies. '0'/0/None означает отсутствие зависимостей. Возвращает два словаря, ID — строки.

Пример: процессы_из_таблицы([['1',3,'0'],['2',4,'1']],skip=0).

прочитать_csv

Английское имя: read_csv

прочитать_csv(path, delimiter=';', encoding='utf-8-sig')

Прочитать CSV как список словарей; первая строка — названия полей. Значения остаются строками.

Пример: прочитать_csv('table.csv'). XLSX нужно предварительно экспортировать в CSV.

прочитать_ods

Английское имя: read_ods

прочитать_ods(path, sheet=0, max_cells=2000000)

Читать непустую область листа ODS в строки значений, включая сохранённые результаты формул. Числа — int/float, пропуски — None. Не пересчитывает формулы; повторения пустых хвостовых строк/ячеек обрезает.

Пример: прочитать_ods('demo_22.ods'). Не поддерживает сложное форматирование/объединённые ячейки.

прочитать_xlsx

Английское имя: read_xlsx

прочитать_xlsx(path, sheet=0)

Читать XLSX без внешних зависимостей: выбранный лист по индексу с 0, результат — строки значений. Числа преобразуются в int/float, пропуски в None. Читает сохранённые результаты формул, НЕ пересчитывает их; отсутствующий кеш формулы — ошибка.

Пример: прочитать_xlsx('9.xlsx'). Сложные типы/стили/даты не интерпретируются.

прочитать_взвешенный_граф

Английское имя: read_weighted_graph

прочитать_взвешенный_граф(path, skip=0, weight=float)

Прочитать ориентированный граф из строк 'u v вес'; ID — int, weight можно заменить на Decimal для точной десятичной арифметики. Результат: {u:{v:вес}}.

Пример: прочитать_взвешенный_граф('23.txt'). Повторное ребро — ошибка.

прочитать_строки_таблицы

Английское имя: read_rows

прочитать_строки_таблицы(path, cast=int, skip=0, delimiter=None, encoding='utf-8-sig')

Прочитать строки таблицы в список списков. skip — число строк заголовка; delimiter=None — любые пробелы. Пустые строки пропускаются.

Пример: прочитать_строки_таблицы('26.txt', skip=1).

прочитать_текст

Английское имя: read_text

прочитать_текст(path, encoding='utf-8-sig')

Прочитать текст, сохраняя переводы строк. Для Windows-файла задайте encoding='cp1251'.

Пример: прочитать_текст('24.txt').

прочитать_точки

Английское имя: read_points

прочитать_точки(path, skip=1, decimal_comma=True, encoding='utf-8-sig')

Прочитать двумерные координаты из TXT, разделённые пробелами/табуляцией. skip=1 пропускает заголовок; decimal_comma заменяет десятичные запятые.

Пример: прочитать_точки('27_A.txt'). При файле без заголовка задайте skip=0.

прочитать_частицы

Английское имя: read_particles

прочитать_частицы(path, skip=0)

Читать частицы из строк x y vx vy mass type, десятичная запятая допустима. Возвращает словари полей, включая energy=mass*(vx²+vy²)/2.

Пример: прочитать_частицы('27.txt'). Строки заголовка явно пропустите skip.

прочитать_числа

Английское имя: read_numbers

прочитать_числа(path, skip=0, encoding='utf-8-sig')

Прочитать все целые числа после skip строк заголовка, независимо от числа столбцов.

Пример: прочитать_числа('17.txt').

различные_перестановки

Английское имя: unique_permutations

различные_перестановки(text)

Ленивый перебор различных перестановок символов, включая повторяющиеся, без хранения всех перестановок.

Пример: list(различные_перестановки('ААБ')).

разложить_на_простые

Английское имя: prime_factors

разложить_на_простые(n)

Простые множители с кратностями в словаре; n>=1.

Пример: разложить_на_простые(72) == {2:3,3:2}.

расписание_процессов

Английское имя: process_schedule

расписание_процессов(durations, dependencies, lag=0)

Ранние start/finish процессов при неограниченном числе исполнителей. durations — {ID:длительность}, dependencies — {ID:[предшественники]}; лаг lag добавляется после зависимостей, не к корневым процессам. Возвращает starts, finishes, total. Циклы/неизвестные ID — ошибка.

Пример: расписание_процессов({'A':3,'B':2},{'B':['A']})['total']==5. Для ограниченного числа процессоров нужен отдельный планировщик.

распределение_ip_по_единицам

Английское имя: ip_weight_counts

распределение_ip_по_единицам(address, mask)

Число всех адресов сети с каждым количеством единичных битов, без перебора. Сеть и broadcast включены.

Пример: sum(распределение_ip_по_единицам('10.0.0.0',8).values()) == 2**24.

расстояние_между_точками

Английское имя: distance

расстояние_между_точками(a, b)

Евклидово расстояние между двумя точками плоскости.

Пример: расстояние_между_точками((0,0),(3,4)) == 5.

редактор_строк

Английское имя: rewrite

редактор_строк(text, rules, condition=None, first_only=True, max_steps=100000)

Исполнитель Редактор: rules — упорядоченные пары (что,на_что). first_only=True — за итерацию первое применимое правило (ЕСЛИ/ИНАЧЕ); False — все правила по порядку (несколько ЕСЛИ). Каждая замена меняет первое вхождение. condition(text) проверяет ПОКА.

Пример: редактор_строк('1111',[('11','2')]) == '22'. Лимит вызывает RuntimeError.

рекурсивная_функция

Английское имя: recursive_function

рекурсивная_функция(rule)

Создать мемоизированную функцию f(n); rule(f,n) содержит базу и рекурсию.

Пример: f=рекурсивная_функция(lambda f,n:1 if n<=1 else n*f(n-1)); f(5)==120. Для большой глубины используйте вычислить_рекуррентную_функцию, лимит рекурсии не меняется.

решето_простых

Английское имя: sieve

решето_простых(limit)

Список простых чисел от 2 до limit включительно, решето Эратосфена. Память O(limit).

Пример: решето_простых(10) == [2,3,5,7].

самая_длинная_цепочка

Английское имя: longest_run

самая_длинная_цепочка(text, allowed)

Самая длинная непрерывная подстрока из символов allowed (множество или строка). Возвращает длину.

Пример: самая_длинная_цепочка('ABXAAA','AB') == 3.

сведения_о_сети

Английское имя: network_info

сведения_о_сети(address, mask)

Параметры IPv4-сети по адресу и маске (число бит или строка). hosts_count — обычные адреса без сети/ broadcast; для /31 и /32 соответствует ipaddress.hosts().

Пример: сведения_о_сети('192.168.1.12',24).

свободные_места

Английское имя: missing_seats

свободные_места(occupied, free_count=2)

Найти ровно free_count свободных мест между соседними занятыми в одном ряду. occupied — пары (ряд,место); возвращает (ряд,первое_свободное) по убыванию ряда, затем возрастанию места.

Пример: свободные_места([(5,2),(5,5)])==[(5,3)].

сгруппировать_и_вычислить

Английское имя: group_aggregate

сгруппировать_и_вычислить(rows, key, value, aggregate=sum)

Сгруппировать словари по полю key, применить aggregate к значениям поля value. Строковые числа сначала преобразуйте.

Пример: сгруппировать_и_вычислить([{'city':'A','n':3}], 'city','n').

следование

Английское имя: implies

следование(a, b)

Логическое следование a → b.

Пример: следование(True, False) вернёт False. Для эквивалентности используйте a == b.

слова_алфавита

Английское имя: words

слова_алфавита(alphabet, length)

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

Пример: list(слова_алфавита('АБ',2)) == ['АА','АБ','БА','ББ'].

слово_по_номеру

Английское имя: word_at

слово_по_номеру(rank, alphabet, length)

Слово по номеру rank с 1; обратная к номер_слова.

Пример: слово_по_номеру(3,'АБ',2) == 'БА'.

соединить_таблицы

Английское имя: join_tables

соединить_таблицы(left, right, left_key, right_key)

Внутреннее соединение списков словарей по ключам; результат — пары (левая_строка, правая_строка). Дубликаты дают все сочетания.

Пример: соединить_таблицы([{'id':1}], [{'ref':1}], 'id', 'ref').

соответствует_маске

Английское имя: mask_matches

соответствует_маске(n, mask)

Соответствие неотрицательного числа десятичной маске: ? — ровно одна цифра, * — любая последовательность, включая пустую. Другие символы запрещены.

Пример: соответствует_маске(12345,'1?3*') == True.

сопоставить_вершины_графов

Английское имя: match_graphs

сопоставить_вершины_графов(graph, numbered, compare_weights=False)

Все соответствия вершин двух графов (списки словарей смежности с весами). Учитывает направление; по умолчанию сопоставляет только наличие рёбер (для №1), compare_weights=True дополнительно требует одинаковых весов. Все вершины, включая изолированные, должны быть ключами обоих словарей. Полный перебор n!, подходит небольшим графам.

Пример: сопоставить_вершины_графов({'A':{'B':1},'B':{'A':1}}, {1:{2:1},2:{1:1}}).

соседние_группы

Английское имя: adjacent_windows

соседние_группы(data, width, predicate)

Подходящие последовательные окна: список (индекс_с_0, кортеж_значений).

Пример: соседние_группы([1,2,3],2,lambda w:sum(w)>3). В отличие от всех пар берёт только соседние элементы.

справка

Английское имя: man

справка(функция=None, *, задание=None, год=2026, поиск=None, листать=False, по_заданиям=True)

Справочник EGEKit в терминале: назначение, сигнатура, параметры, пример и номера заданий. функция — объект функции либо её русское/английское имя строкой. Без функции выводится список с краткими описаниями. Целое число первым аргументом означает номер задания. задание и год фильтруют список; поиск ищет текст в именах и описаниях; по_заданиям=True группирует список по номерам 1–27 с названиями тем (режим по умолчанию). по_заданиям=False включает алфавитный список. Каждый пункт показывает номера заданий для выбранного года; листать=True открывает системный просмотрщик через pydoc.pager (выход обычно клавишей q). По умолчанию справка просто печатается, не требует действий и возвращает None. Ничего не выполняет из переданной строки: имена берутся только из каталога.

Пример: справка() # Функции по заданиям от №1 до №27 справка(по_заданиям=False) # Алфавитный список справка(по_заданиям=True) # Группы по заданиям 1–27 справка(делители) # Подробная справка о функции справка('делители') # То же по строковому имени справка('делители') # Английское имя тоже подходит справка(17) # Функции задания 17 справка(задание=10, год=2027) # Номер по проекту 2027 справка(поиск='простые') # Поиск в справочнике справка('делители', листать=True) # Постраничный просмотр

среднее_координат

Английское имя: centroid

среднее_координат(points)

Среднее арифметическое координат; обычно не совпадает с точкой исходного набора.

Пример: среднее_координат([(0,0),(2,4)]) == (1.0,2.0). Не заменяет медоид.

среднее_центров_с_масштабом

Английское имя: scaled_center_mean

среднее_центров_с_масштабом(centers, scale=10000, rounding='trunc')

Среднее координат центров, умноженное на scale. rounding='trunc' отбрасывает дробную часть к нулю, 'floor' округляет вниз, 'round' использует Python round.

Пример: среднее_центров_с_масштабом([(1,2),(3,4)]) == (20000,30000). Модуль/порядок координат задавайте по условию отдельно.

статистика_соседних_групп

Английское имя: adjacent_summary

статистика_соседних_групп(data, width, predicate, score=sum)

Количество подходящих соседних окон и минимум/максимум score(window); None при отсутствии.

Пример: статистика_соседних_групп([1,2,3],2,lambda w:True) == {'count':2,'min':3,'max':5}.

стоимости_на_кольце

Английское имя: circular_costs

стоимости_на_кольце(weights)

Стоимость пункта в каждой позиции равномерно размеченного кольца: sum(weights[j]*min(|i-j|,n-|i-j|)). O(n) через префиксы, n>=1.

Пример: стоимости_на_кольце([1,0,0,0]) == [0,1,2,1]. Умножьте на физический шаг между позициями.

суммы_путей_робота

Английское имя: grid_path_extremes

суммы_путей_робота(grid, moves=((1, 0), (0, 1)), blocked=None)

Минимальная и максимальная сумма пути из верхней левой в нижнюю правую клетку, включая обе. None — стена. moves допускает только сдвиги вниз/вправо без (0,0). Возвращает (None,None), если пути нет.

Пример: суммы_путей_робота([[1,2],[3,4]]) == (7,8). Стены между клетками моделируйте отдельно графом.

таблица_истинности

Английское имя: truth_table

таблица_истинности(variables, predicate)

Полная таблица истинности. variables — строка/список имён; predicate получает именованные аргументы. Результат: словари с полем F.

Пример: таблица_истинности('xy', lambda x,y: x and not y).

текст_из_docx

Английское имя: docx_text

текст_из_docx(path)

Извлечь текст основных абзацев и таблиц DOCX средствами stdlib, без форматирования; колонтитулы/сноски не включены.

Пример: текст_из_docx('book.docx'). Для старого DOC сначала сохраните DOCX.

точка_в_многоугольнике

Английское имя: point_in_polygon

точка_в_многоугольнике(point, polygon, boundary=False, eps=1e-09)

Проверить точку в простом многоугольнике методом луча; boundary включает контур. eps — допуск для вещественных координат.

Пример: точка_в_многоугольнике((1,1),[(0,0),(3,0),(3,3),(0,3)]) == True.

функции_задания

Английское имя: functions_for

функции_задания(номер, год=2026)

Русские имена функций для задания и года.

Пример: функции_задания(13, год=2026).

характеристики_строки

Английское имя: row_profile

характеристики_строки(row)

Сводка строки: сумма, min/max (None для пустой), частоты, повторённые и одиночные значения с учётом кратности.

Пример: характеристики_строки([1,2,2])['repeated'] == [2,2].

целые_точки_в_фигурах

Английское имя: lattice_points

целые_точки_в_фигурах(polygons, mode='intersection', boundary=False, max_candidates=2000000)

Целочисленные точки внутри пересечения/объединения простых многоугольников, mode='intersection'/'union'. boundary включает границы. Возвращает координаты, не только количество. Перебор ограничен max_candidates.

Пример: len(целые_точки_в_фигурах([[(0,0),(3,0),(3,3),(0,3)]])) == 4.

центр_по_медиане_признака

Английское имя: median_item

центр_по_медиане_признака(items, key)

Элемент, минимизирующий сумму абсолютных разностей одномерного признака; сортировка O(n log n). При нескольких оптимальных берёт нижнюю медиану.

Пример: центр_по_медиане_признака([9,1,2],lambda x:x)==2. Для энергий: key=lambda p:p['energy'].

центр_по_сумме_расстояний

Английское имя: medoid

центр_по_сумме_расстояний(points)

Точка набора с минимальной суммой евклидовых расстояний до остальных. Точный O(n²), O(n) памяти; при равенстве первая во входе.

Пример: центр_по_сумме_расстояний([(0,0),(1,0),(10,0)]) == (1,0). На очень больших кластерах может работать долго.

центры_кластеров

Английское имя: cluster_centers

центры_кластеров(clusters, method='medoid')

Центры непустых кластеров: method='центр_по_сумме_расстояний' или 'среднее_координат'.

Пример: центры_кластеров([[(0,0),(1,0),(9,0)]]) == [(1,0)]. Выбирайте определение центра строго по условию.

цифры_числа

Английское имя: base_digits

цифры_числа(n, base)

Цифры неотрицательного числа списком, от старшей к младшей; допускает основания больше 36.

Пример: цифры_числа(10,3) == [1,0,1].

Проверки и источники

24 автоматических тестовых метода, в том числе сотни случайных сравнений с полным перебором. На файлах демоверсии 2027 совпали официальные ответы №22, №23, №24, №26 и №27. Это проверка конкретных алгоритмов и данных, а не доказательство универсальной применимости.

ФИПИ: демоверсии, спецификации, кодификаторы. Проверено 18.10.2026. Изменения 2027 приведены по опубликованному проекту.

Исходный код — egekit.py · Полные примеры — examples_ru.py · Текстовая версия — GUIDE.md · Проверки — VALIDATION.md. Страница работает без интернета.