Skip to content

viktoria2506/paradigms-2018

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Курс «Парадигмы программирования» ИТМО

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

Модификации

  • Базовая

  • Простая. Дополнительное реализовать поддержку:

    • переменных: y, z;
    • унарных функций:
      • negate — смена знака, -2 negate равно 2;
      • cube — возведение в куб, 2 cube равно 8;
      • cuberoot — кубический корень, 8 cuberoot равно 2;
    • Исходный код тестов
  • Сложная. Дополнительное реализовать поддержку:

    • переменных: y, z;
    • констант:
      • pi — π;
      • e — основание натурального логарифма;
    • операций:
      • negate — смена знака, -2 negate равно 2;
      • min3 — минимальный из трех элементов, 3 1 4 min3 равно 1;
      • max5 — максимальный из пяти элементов, 3 1 4 0 2 max5 равно 4.
    • Исходный код тестов
      • Запускать c аргументом hard или easy

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

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

Запуск в браузере

Запуск из консоли

Обратите внимание на реализацию функции mCurry в разделе про функции высшего порядка.

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

Модификации

  • Базовая
    • Класс 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.
    • Исходный код тестов
  • Простая
    • Дополнительно реализовать поддержку режимов:
      • u — вычисления в int без проверки на переполнение;
      • l — вычисления в long без проверки на переполнение;
      • s — вычисления в s без проверки на переполнение.
    • Исходный код тестов
  • Сложная
    • Реализовать операции из простой модификации.
    • Дополнительно реализовать унарные операции:
      • count — число установленных битов, count 5 равно 2.
    • Дополнительно реализовать бинарную операцию (минимальный приоритет):
      • min — минимум, 2 min 3 равно 2;
      • max — максимум, 2 max 3 равно 3.
    • Дополнительно реализовать поддержку режимов:
      • u — вычисления в int без проверки на переполнение;
      • l — вычисления в long без проверки на переполнение;
      • s — вычисления в s без проверки на переполнение.
    • Исходный код тестов

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

Модификации

  • Базовая
    • Класс ExpressionParser должен реализовывать интерфейс Parser
    • Классы CheckedAdd, CheckedSubtract, CheckedMultiply, CheckedDivide и CheckedNegate должны реализовывать интерфейс TripleExpression
    • Нельзя использовать типы long и double
    • Нельзя использовать методы классов Math и StrictMath
    • Исходный код тестов
  • Простая
    • Дополнительно реализовать унарные операции:
      • log10 — логарифм по уснованию 10, log10 1000 равно 3;
      • pow10 — 10 в степени, pow10 4 равно 10000.
    • Исходный код тестов
  • Сложная
    • Реализовать операции простой модификации.
    • Дополнительно реализовать бинарные операции (максимальный приоритет):
      • ** — возведение в степень, 2 ** 3 равно 8;
      • // — логарифм, 10 // 2 равно 3.
    • Исходный код тестов

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

Модификации

  • Базовая
  • Простая
    • Дополнительно реализовать бинарные операции:
      • & — побитное И, приоритет меньше чем у + (6 & 1 + 2 равно 6 & (1 + 2) равно 2);
      • ^ — побитный XOR, приоритет меньше чем у & (6 ^ 1 + 2 равно 6 ^ (1 + 2) равно 5);
      • | — побитное ИЛИ, приоритет меньше чем у ^ (6 | 1 + 2 равно 6 | (1 + 2) равно 7);
    • Исходный код тестов
  • Сложная
    • Реализовать операции из простой модификации.
    • Дополнительно реализовать унарные операции (приоритет как у унарного минуса):
      • ~ — побитное отрицание, ~-5 равно 4;
      • count — число установленных битов, count -5 равно 31.
    • Исходный код тестов

Домашнее задание 5. Вычисление выражений

Модификации

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

Модификации

  • Базовая
  • Простая
    • Добавить в интерфейс очереди и реализовать метод toArray, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту
    • Исходная очередь должна оставаться неизменной
    • Дублирования кода быть не должно
    • Исходный код тестов
    • Откомпилированные тесты
  • Сложная
    • Добавить в интерфейс очереди и реализовать методы
      • filter(predicate) – создать очередь, содержащую элементы, удовлетворяющие предикату
      • map(function) – создать очередь, содержащую результаты применения функции
    • Исходная очередь должна остаться неизменной
    • Тип возвращаемой очереди должен соответствовать типу исходной очереди
    • Взаимный порядок элементов должен сохраняться
    • Дублирования кода быть не должно
    • Исходный код тестов
    • Откомпилированные тесты

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

Модификации

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

Модификации

Домашнее задание 1. Хэширование

Модификации

Для того, чтобы протестировать базовую модификацию домашнего задания:

  1. Скачайте тесты (CalcMD5Test.jar)
  • Откомпилируйте CalcMD5.java

  • Проверьте, что создался CalcMD5.class

  • В каталоге, в котором находится CalcMD5.class выполните команду

       java -jar <путь к CalcMD5Test.jar>
    

    Например, если CalcMD5Test.jar находится в текущем каталоге, выполните команду

        java -jar CalcMD5Test.jar
    

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published