Files
paradigms/README.md
root 67e5ec8859
Some checks failed
Array Queue Test / test (push) Successful in 26s
Clojure Example Test / test (push) Successful in 8s
Clojure Linear Test / test (push) Successful in 14s
Generic Test / test (push) Has been cancelled
Exception Test / test (push) Has been cancelled
JavaScript Expressions Test / test (push) Has been cancelled
JavaScript Objective Expressions Test / test (push) Has been cancelled
JavaScript Prefix Test / test (push) Has been cancelled
Queues Test / test (push) Has been cancelled
Binary Search Test / test (push) Has been cancelled
JavaScript Example Test / test (push) Successful in 10s
update README.md
2026-04-13 21:15:11 +03:00

25 KiB
Raw Blame History

Тесты к курсу «Парадигмы программирования»

Условия домашних заданий

Домашнее задание 9. Линейная алгебра на Clojure Clojure Linear Tests

Модификации

  • Базовая
    • Код должен находиться в файле clojure-solutions/linear.clj.
    • Исходный код тестов
      • Запускать с указанием сложности (easy или hard) и модификации.

Домашнее задание 8. Обработка ошибок на JavaScript JavaScript Prefix Tests

Модификации

  • Base
    • Код должен находиться в файле javascript-solutions/objectExpression.js.
    • Исходный код тестов
      • Запускать с указанием модификации и сложности (easy или hard).
  • Postfix. Дополнительно реализовать поддержку:
    • Выражений в постфиксной записи:
      • (2 3 +) равно 5
      • функция parsePostfix
      • метод postfix
    • Исходный код тестов
      • Запускать с указанием модификации и сложности (easy или hard).
  • 3637. Дополнительно реализовать поддержку:
    • постфиксной записи;
    • разных видов скобок: квадратных ([]), фигурных ({}), угловых (<>);
    • операций произвольного числа аргументов:
      • SumExp (sumExp) сумма экспонент, (sumExp 2 3 16) примерно равно 8886137;
      • Lse (lse) LogSumExp, (lse 2 3 16) примерно равно 16.
  • 3839. Дополнительно реализовать поддержку:
    • постфиксной записи;
    • разных видов скобок: квадратных ([]), фигурных ({}), угловых (<>).
    • операций произвольного числа аргументов:
      • SumExp (sumExp) сумма экспонент, (sumExp 2 3 16) примерно равно 8886137;
      • Lme (lme) логарифма среднего экспонент, (lme 2 7 9) примерно равно 8.
  • 3435. Дополнительно реализовать поддержку:
    • разных видов скобок: квадратных ([]), фигурных ({}), угловых (<>), французские кавычки («»).
    • операций произвольного числа аргументов:
      • MeanExp (meanExp) среднее экспонент, (meanExp 2 4 15) примерно равно 1089693.
  • 3233. Дополнительно реализовать поддержку:
    • разных видов скобок: квадратных ([]), фигурных ({}), угловых (<>), французские кавычки («»).
    • операций одного или двух аргументов:
      • ArcTan12 (atan12) арктангенс, (atan12 1256) примерно равно 1.57, (atan12 841 540) примерно равно 1.

Домашнее задание 7. Объектные выражения на JavaScript JavaScript Objective Expressions Tests

Модификации

  • Base
    • Код должен находиться в файле javascript-solutions/objectExpression.js.
    • Исходный код тестов
      • Запускать с указанием модификации и сложности (easy, hard или bonus).
  • Simplify. С проверкой упрощений.
  • 3637. Дополнительно реализовать поддержку:
    • бинарных функций:
      • Power (pow) возведение в степень, 2 3 pow равно 8;
      • Log (log) логарифм абсолютного значения аргумента по абсолютному значению основания -2 -8 log равно 3.
    • функций от N аргументов для N=1..5:
      • SumN (sumN) сумма аргументов, 1 2 3 4 5 sum5 равно 15.
  • 3839. Дополнительно реализовать поддержку:
    • функций:
    • функций от N аргументов для N=1..5:
      • SumN (sumN) сумма аргументов, 1 2 3 4 5 sum5 равно 15.
      • AvgN (avgN) арифметическое среднее аргументов, 1 2 3 4 5 avg5 равно 3.
  • 3435. Дополнительно реализовать поддержку функций:
    • Wrap (wrap) функции wrap(x, min, max), 3 5 8 wrap равно 6;
    • SoftWrap (softWrap) сглаженного аналога wrap:
      softWrap(x, min, max, λ) = arcsin(cos(a) * tanh(λ * -sin(a))) * (max - min) / π + (max + min) / 2,
      где a = π * (x - min) / (max - min) 3 5 8 0.5 softWrap примерно равно 6.3.
  • 3233. Дополнительно реализовать поддержку функций:

Домашнее задание 6. Функциональные выражения на JavaScript JavaScript Expressions Tests

Модификации

  • Базовая
    • Код должен находиться в файле javascript-solutions/functionalExpression.js.
    • Исходный код тестов
      • Запускать с аргументом hard или easy.
  • 3637. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант: one 1, two 2, three 3;
    • операций:
      • clamp функции clamp(x, min, max), 3 5 8 clamp равно 5;
      • wrap функции wrap(x, min, max), 3 5 8 wrap равно 6.
      • argMin3 индекс минимального из трёх аргументов, 3 4 1 argMin3 равно 2;
      • argMax3 индекс максимального из трёх аргументов, 3 4 1 argMax3 равно 1;
      • argMin5 индекс минимального из пяти аргументов, 3 4 1 5 6 argMin5 равно 2;
      • argMax5 индекс максимального из пяти аргументов, 3 4 10 5 6 argMax5 равно 2.
  • 3839. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант: one 1, two 2, three 3;
    • операций:
      • clamp функции clamp(x, min, max), 3 5 8 clamp равно 5;
      • softClamp сглаженного аналога clamp:
        softClamp(x, min, max, λ) = min + (max - min) / (1 + exp(λ((max + min) / 2 - x))),
        3 5 8 0.2 softClamp примерно равно 6.
      • argMin3 индекс минимального из трёх аргументов, 3 4 1 argMin3 равно 2;
      • argMax3 индекс максимального из трёх аргументов, 3 4 1 argMax3 равно 1;
      • argMin5 индекс минимального из пяти аргументов, 3 4 1 5 6 argMin5 равно 2;
      • argMax5 индекс максимального из пяти аргументов, 3 4 10 5 6 argMax5 равно 2.
  • 3435. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант: one 1, two 2, three 3;
    • операций:
      • arcTan (atan) унарный арктангенс, 1256 atan примерно равно 1.57;
      • arcTan2 (atan2) бинарный арктангенс, 841 540 atan2 примерно равно 1.
  • 3233. Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант: one 1, two 2, three 3;
    • операций:
      • sin синус, 3.14159265 sin примерно равно 0;
      • cos косинус, 3.14159265 cos примерно равно -1.

Домашнее задание 5. Вычисления в различных типах Generic Tests

Модификации

  • Base
    • Класс GenericTabulator должен реализовывать интерфейс Tabulator и строить трёхмерную таблицу значений заданного выражения.
      • mode режим вычислений:
        • i вычисления в int с проверкой на переполнение;
        • d вычисления в double без проверки на переполнение;
        • bi вычисления в BigInteger.
      • expression выражение, для которого надо построить таблицу;
      • x1, x2 минимальное и максимальное значения переменной x (включительно)
      • y1, y2, z1, z2 аналогично для y и z.
      • Результат: элемент result[i][j][k] должен содержать значение выражения для x = x1 + i, y = y1 + j, z = z1 + k. Если значение не определено (например, по причине переполнения), то соответствующий элемент должен быть равен null.
    • Исходный код тестов
      • Первый аргумент: easy или hard
      • Последующие аргументы: модификации
  • 3637 Дополнительно реализуйте:
    • Унарные операции:
      • count число установленных битов, count 5 равно 2.
    • Бираные операции (минимальный приоритет):
      • min минимум, 2 min 3 равно 2;
      • max максимум, 2 max 3 равно 3.
    • Поддержку режимов:
      • u вычисления в int без проверки на переполнение;
      • s вычисления в short без проверки на переполнение;
      • f вычисления в float без проверки на переполнение.
  • 3839 Дополнительно реализуйте:
    • Унарные операции:
      • count число установленных битов, count 5 равно 2.
    • Бинарные операции (минимальный приоритет):
      • min минимум, 2 min 3 равно 2;
      • max максимум, 2 max 3 равно 3.
    • Поддержку режимов:
      • u вычисления в int без проверки на переполнение;
      • s вычисления в short без проверки на переполнение;
      • t вычисления в int без проверки на переполнение с отбрасыванием остатка от деления на 10.
  • 3435 Дополнительно реализуйте:
    • Унарные операции:
      • count число установленных битов, count 5 равно 2.
    • Бинарные операции (минимальный приоритет):
      • min минимум, 2 min 3 равно 2;
      • max максимум, 2 max 3 равно 3.
    • Поддержку режимов:
      • u вычисления в int без проверки на переполнение;
  • 3233 Дополнительно реализуйте поддержку режимов:
    • u вычисления в int без проверки на переполнение;
    • s вычисления в short без проверки на переполнение;
    • f вычисления в float без проверки на переполнение.

Домашнее задание 4. Очереди Queues Tests

Модификации

  • Базовая
  • 3637
    • Добавить в интерфейс очереди и реализовать методы
      • contains(element) проверяет, содержится ли элемент в очереди
      • removeFirst(element) удаляет первое вхождение элемента в очередь и возвращает было ли такое
    • Дублирования кода быть не должно
  • 3839
    • Добавить в интерфейс очереди и реализовать методы
      • getNth(n) создать очередь, содержащую каждый n-й элемент, считая с 1
      • removeNth(n) создать очередь, содержащую каждый n-й элемент, и удалить их из исходной очереди
      • dropNth(n) удалить каждый n-й элемент из исходной очереди
    • Тип возвращаемой очереди должен соответствовать типу исходной очереди
    • Дублирования кода быть не должно
  • 3435
    • Добавить в интерфейс очереди и реализовать методы
      • removeIf(predicate) удалить элементы, удовлетворяющие предикату
      • retainIf(predicate) удалить элементы, не удовлетворяющие предикату
    • Взаимный порядок элементов должен сохраняться
    • Дублирования кода быть не должно
  • 3233
    • Добавить в интерфейс очереди и реализовать методы
      • removeAll(element) удалить все элементы равные заданному
      • retainAll(predicate) оставить только элементы равные заданному
    • Взаимный порядок элементов должен сохраняться
    • Дублирования кода быть не должно

Домашнее задание 3. Очередь на массиве ArrayQueue Tests

Модификации

  • Базовая
  • 3637. Дополнительно реализовать методы:
    • push добавить элемент в начало очереди;
    • peek вернуть последний элемент в очереди;
    • remove вернуть и удалить последний элемент из очереди;
    • count вернуть число вхождений элемента в очередь.
  • 3839. Дополнительно реализовать методы:
    • push добавить элемент в начало очереди;
    • peek вернуть последний элемент в очереди;
    • remove вернуть и удалить последний элемент из очереди;
    • countIf вернуть число элементов очереди, удовлетворяющих предикату.
  • 3435
    • Дополнительно реализовать методы:
      • indexIf вернуть индекс первого элемента, удовлетворяющего предикату;
      • lastIndexIf вернуть индекс последнего элемента, удовлетворяющего предикату.
    • Индексы отсчитываются с головы очереди.
    • Если искомого элемента нет, методы должны возвращать -1.
  • 3233
    • Дополнительно реализовать методы:
      • indexOf вернуть индекс первого вхождения элемента в очередь;
      • lastIndexOf вернуть индекс последнего вхождения элемента в очередь.
    • Индексы отсчитываются с головы очереди.
    • Если искомого элемента нет, методы должны возвращать -1.

Домашнее задание 2. Бинарный поиск BinarySearch Tests

Модификации

  • Базовая
  • 3637
    • На вход подаётся число x и массив, отсортированный по невозрастанию.
    • Требуется вывести число элементов массива, равных x.
    • Не допускается использование типов long и BigInteger.
    • Класс должен иметь имя BinarySearch3637
  • 3839
    • На вход подаётся число x и массив, отсортированный по невозрастанию.
    • Требуется вывести два числа: начало и длину диапазона элементов, равных x. Если таких элементов нет, то следует вывести пустой диапазон, у которого левая граница совпадает с местом вставки элемента x.
    • Не допускается использование типов long и BigInteger.
    • Класс должен иметь имя BinarySearch3839
  • 3435
    • На вход подается отсортированный (строго) по убыванию массив, циклически сдвинутый на k элементов. Все числа в массиве различны.
    • Требуется найти k.
    • Класс должен иметь имя BinarySearch3435
  • 3233
    • На вход подается отсортированный (строго) по возрастанию массив, циклически сдвинутый на k элементов. Все числа в массиве различны.
    • Требуется найти k.
    • Класс должен иметь имя BinarySearch3233

Домашнее задание 1. Обработка ошибок Exception Tests

Модификации

  • Base
    • Класс ExpressionParser должен реализовывать интерфейс ListParser.
    • Результат разбора должен реализовывать интерфейс ListExpression.
    • Нельзя использовать типы long и double
    • Нельзя использовать методы классов Math и StrictMath
    • Исходный код тестов
      • Первый аргумент: easy или hard
      • Последующие аргументы: модификации
  • 3637
    • Дополнительно реализуйте унарные операции
      • ‖x‖ модуль, ‖-5‖ равно 5;
      • ³ возведение в куб, -5³ равно 125;
      • кубический корень, ∛-123 равно -4.
  • 3839
    • Дополнительно реализуйте унарные операции:
      • ‖x‖ модуль, ‖-5‖ равно 5;
      • ² возведение в квадрат, -5² равно 25;
      • квадратный корень, √24 равно 4;
      • ³ возведение в куб, -5³ равно 125;
      • кубический корень, ∛-123 равно -4.
  • 3435
    • Дополнительно реализуйте унарные операции:
      • ‖x‖ модуль, ‖-5‖ равно 5;
      • квадратный корень, √24 равно 4.
  • 3233
    • Дополнительно реализуйте унарные операции:
      • ‖x‖ модуль числа, ‖-5‖ равно 5;
      • кубический корень, ∛-123 равно -4.