me c501d58778
Some checks failed
Exception Test / test (push) Failing after 7s
Generic Test / test (push) Failing after 7s
JavaScript Example Test / test (push) Failing after 6s
JavaScript Expressions Test / test (push) Failing after 7s
JavaScript Objective Expressions Test / test (push) Failing after 6s
Queues Test / test (push) Failing after 6s
Binary Search Test / test (push) Failing after 7s
Array Queue Test / test (push) Failing after 6s
trigger
2026-04-09 09:31:14 +03:00
2026-04-08 21:26:23 +03:00
2026-04-08 21:25:17 +03:00
2026-04-08 21:25:17 +03:00
2026-04-08 21:25:17 +03:00
2026-04-08 21:25:17 +03:00
2026-04-08 21:25:17 +03:00
2026-04-08 21:26:23 +03:00
2026-04-08 21:26:23 +03:00
2026-04-08 20:59:40 +03:00

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

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

Домашнее задание 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.

Домашнее задание 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.

Исходный код к лекциям по JavaScript

Скрипт с примерами

Запуск примеров

Лекция 1. Типы и функции

Тестовое задание на JavaScript JavaScript Example Tests

Это задание предназначено для проверки правильности настройки JavaScript. Вам надо проверить, что оно успешно проверяется на вашем компьютере.

Модификации

  • base
    • Код решения javascript-solutions/example.js в репозитории решений. Если всё настроено верно, то вам достаточно сделать git pull --rebase в своём репозитории, чтобы получить решение.
    • Исходный код тестов
      • Запускать с аргументом hard или easy.

Запуск тестов

  • Для запуска тестов используется GraalJS (часть проекта GraalVM), но вам не требуется их скачивать.
  • Для запуска тестов рекомендуется использовать скрипты TestJS.cmd и TestJS.sh
    • Репозиторий должен быть скачан целиком.
    • Скрипты должны находиться в каталоге javascript (их нельзя перемещать, но можно вызывать из других каталогов).
    • В качестве аргументов командной строки указывается полное имя класса теста и модификация, например jstest.example.ExampleTest hard base.
  • Для самостоятельного запуска из консоли необходимо использовать командную строку вида: java -ea --module-path=<js>/graal --class-path <js> jstest.example.ExampleTest {hard|easy} <variant>, где
    • -ea включение проверок времени исполнения;
    • --module-path=<js>/graal путь к модулям Graal (здесь и далее <js> путь к каталогу javascript этого репозитория);
    • --class-path <js> путь к откомпилированным тестам;
    • {hard|easy} указание тестируемой сложности;
    • <variant> указание тестируемой модификации.
  • При запуске из IDE, обычно не требуется указывать --class-path, так как он формируется автоматически. Остальные опции всё равно необходимо указать.
  • Troubleshooting
    • Error occurred during initialization of boot layer java.lang.module.FindException: Module org.graalvm.truffle not found, required by jdk.internal.vm.compiler неверно указан --module-path;
    • Graal.js not found неверно указаны --module-path
    • Error: Could not find or load main class jstest.example.ExampleTest неверно указан --class-path;
    • Exception in thread "main" java.lang.AssertionError: You should enable assertions by running 'java -ea jstest.functional.FunctionalExpressionTest' не указана опция -ea;
    • Exception in thread "main" jstest.EngineException: Script 'example.js' not found в текущем каталоге отсутствует решение (example.js)

Домашнее задание 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.
Description
No description provided
Readme 26 MiB
Languages
Java 91.7%
JavaScript 7.6%
HTML 0.3%
Batchfile 0.2%
Shell 0.2%