olefirenque / paradigms

Университет ИТМО, Прикладная математика и информатика, 2 семестр

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

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

Домашнее задание 14. Разбор выражений на Prolog

Модификации

  • Base (32-33)
    • Код должен находиться в файле prolog-solutions/expression.pl.
    • Исходный код тестов
      • Запускать c указанием модификации и сложности (easy или hard).
  • Variables. Дополнительно реализовать поддержку:
    • Переменных, состоящих из произвольного количества букв XYZ в любом регистре
      • Настоящее имя переменной определяется первой буквой ее имени
  • VarSinhCosh (36-37). Сделать модификацию Variables и дополнительно реализовать поддержку:
    • унарных операций:
      • op_sinh (sinh) – гиперболический синус, sinh(3) немного больше 10;
      • op_cosh (cosh) – гиперболический косинус, cosh(3) немного меньше 10.

Домашнее задание 13. Дерево поиска на Prolog

Модификации

  • Базовая
    • Код должен находиться в файле prolog-solutions/tree-map.pl.
    • Исходный код тестов
      • Запускать c аргументом easy или hard
  • Last (36-37)
    • Добавьте правила:
      • map_getLast(Map, (Key, Value)), возвращающее максимальную пару;
      • map_removeLast(Map, Result), удаляющее максимальную пару.
    • Исходный код тестов

Домашнее задание 12. Простые числа на Prolog

Модификации

  • Базовая
    • Код должен находиться в файле prolog-solutions/primes.pl.
    • Исходный код тестов
      • Запускать c аргументом easy, hard или bonus
  • Gcd (36-37)
    • Добавьте правило gcd(A, B, GCD), подсчитывающее НОД(A, B) через разложение на простые множители: gcd(4, 6, 2).
    • Исходный код тестов

Домашнее задание 11. Комбинаторные парсеры

Модификации

  • Базовая
    • Код должен находиться в файле clojure-solutions/expression.clj.
    • Исходный код тестов
      • Запускать c указанием модификации и сложности (easy или hard).
  • PowLog (36-37). Сделать модификацию Variables и дополнительно реализовать поддержку:
    • Бинарных правоассоциативных операций максимального приоритета:
      • IPow (**) – возведения в степень: 4 ** 3 ** 2 равно 4 ** (3 ** 2) равно 262144
      • ILog (//) – взятия логарифма: 8 // 9 // 3 равно 8 // (9 // 3) равно 3

Домашнее задание 10. Объектные выражения на Clojure

Модификации

  • Base
    • Код должен находиться в файле clojure-solutions/expression.clj.
    • Исходный код тестов
      • Запускать c указанием модификации и сложности (easy или hard).
  • SumAvg (36-37). Дополнительно реализовать поддержку:
    • операций произвольного числа аргументов:
      • Sum (sum) – сумма, (sum 1 2 3) равно 6;
      • Avg (avg) – арифметическое среднее, (avg 1 2 3) равно 2;

Домашнее задание 9. Функциональные выражения на Clojure

Модификации

  • Base
    • Код должен находиться в файле clojure-solutions/expression.clj.
    • Исходный код тестов
      • Запускать c указанием модификации и сложности (easy или hard).
  • SumAvg (36-37). Дополнительно реализовать поддержку:
    • операций произвольного числа аргументов:
      • sum – сумма, (sum 1 2 3) равно 6;
      • avg – среднее, (avg 1 2 3) равно 2;

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

Модификации

  • Базовая
    • Код должен находиться в файле clojure-solutions/linear.clj.
    • Исходный код тестов
      • Запускать c аргументом easy или hard
  • Simplex (36-37)
    • Назовем симплексом многомерную таблицу чисел, такую что для некоторого n в ней существуют все значения с суммой индексов не превышающей n и только эти значения.
    • Добавьте операции поэлементного сложения (x+), вычитания (x-) и умножения (x*) симплексов. Например, (x+ [[1 2] [3]] [[5 6] [7]]) должно быть равно [[6 8] [10]].
    • Исходный код тестов

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

Модификации

  • Base
    • Код должен находиться в файле javascript-solutions/objectExpression.js.
    • Исходный код тестов
      • Запускать c указанием модификации и сложности (easy или hard).
  • Postfix: SumsqLength (36-37). Дополнительно реализовать поддержку:
    • выражений в постфиксной записи: (2 3 +) равно 5
    • операций произвольного числа аргументов:
      • Sumsq (sumsq) – сумма квадратов, (1 2 3 sumsq) равно 14;
      • Length (lengthу) – длина вектора, (3 4 length) равно 5;
    • Исходный код тестов

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

Модификации

  • Base
    • Код должен находиться в файле javascript-solutions/objectExpression.js.
    • Исходный код тестов
      • Запускать c указанием модификации и сложности (easy, hard или bonus).
  • Cube (36, 37). Дополнительно реализовать поддержку:
    • унарных функций:
      • Cube (cube) – возведение в куб, 3 cube равно 27;
      • Cbrt (cbrt) – извлечение кубического корня, -27 cbrt равно −3;

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

Модификации

  • Базовая
    • Код должен находиться в файле javascript-solutions/functionalExpression.js.
    • Исходный код тестов
      • Запускать c аргументом hard или easy;
  • Mini (для тестирования)
  • OneMinMax (36, 37). Дополнительно реализовать поддержку:
    • переменных: y, z;
    • констант:
      • one – 1;
      • two – 2;
    • операций:
      • min5 – минимальный из пяти аргументов, 3 1 4 0 2 min5 равно 0;
      • max3 – максимальный из трех аргументов, 3 1 4 max3 равно 4.
    • Исходный код тестов

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

Модификации

  • Базовая
    • Класс 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.
    • Исходный код тестов
  • AsmUls (36-37)
    • Реализовать режимы из модификации Uls.
    • Дополнительно реализовать унарные операции:
      • abs – модуль числа, abs -5 равно 5;
      • square – возведение в квадрат, square 5 равно 25.
    • Дополнительно реализовать бинарную операцию (максимальный приоритет):
      • mod – взятие по модулю, приоритет как у умножения (1 + 5 mod 3 равно 1 + (5 mod 3) равно 3).
    • Исходный код тестов

Домашнее задание 3. Очередь на связном списке

Модификации

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

Модификации

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

Модификации

About

Университет ИТМО, Прикладная математика и информатика, 2 семестр


Languages

Language:Java 65.0%Language:JavaScript 13.6%Language:Clojure 13.3%Language:Prolog 8.1%