Базовая нумерация — 2026. В правом столбце тем указаны изменения проекта ФИПИ 2027.
У каждой функции: сигнатура, назначение, параметры, пример и ограничения. Фильтр ищет по имени и описанию. Номера показывают также смежные вспомогательные алгоритмы.
активные_процессы
Английское имя: 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. Это проверка конкретных алгоритмов и данных, а не доказательство универсальной применимости.
Исходный код — egekit.py · Полные примеры — examples_ru.py · Текстовая версия — GUIDE.md · Проверки — VALIDATION.md. Страница работает без интернета.