Модификации
-
Базовая
- Код должен находиться в файле
functionalExpression.js
. - Исходный код тестов
- Запускать c аргументом
hard
илиeasy
;
- Запускать c аргументом
- Код должен находиться в файле
-
Простая. Дополнительное реализовать поддержку:
- переменных:
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
- Запускать c аргументом
- переменных:
Запуск из консоли
- на Java:
java -cp . RunJS
- на jjs:
jjs RunJS.jjs.js
- на node.js:
node RunJS.node.js
Обратите внимание на реализацию функции mCurry
в разделе про
функции высшего порядка.
Модификации
- Базовая
- Класс
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
без проверки на переполнение.
- Исходный код тестов
Модификации
- Базовая
- Класс
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.
- Исходный код тестов
Модификации
- Базовая
- Класс
ExpressionParser
должен реализовывать интерфейс Parser - Результат разбора должен реализовывать интерфейс TripleExpression
- Исходный код тестов
- Класс
- Простая
- Дополнительно реализовать бинарные операции:
&
— побитное И, приоритет меньше чем у+
(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.
- Исходный код тестов
Модификации
- Базовая
- Реализовать интерфейс Expression
- Исходный код тестов
- Простая
- Реализовать интерфейс DoubleExpression
- Исходный код тестов
- Сложная
- Реализовать интерфейсы DoubleExpression и TripleExpression
- Исходный код тестов
Модификации
- Базовая
- Простая
- Добавить в интерфейс очереди и реализовать метод
toArray
, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту - Исходная очередь должна оставаться неизменной
- Дублирования кода быть не должно
- Исходный код тестов
- Откомпилированные тесты
- Добавить в интерфейс очереди и реализовать метод
- Сложная
- Добавить в интерфейс очереди и реализовать методы
- Исходная очередь должна остаться неизменной
- Тип возвращаемой очереди должен соответствовать типу исходной очереди
- Взаимный порядок элементов должен сохраняться
- Дублирования кода быть не должно
- Исходный код тестов
- Откомпилированные тесты
Модификации
- Базовая
- Классы должны находиться в пакете
queue
- Исходный код тестов
- Откомпилированные тесты
- Классы должны находиться в пакете
- Простая
- Реализовать метод
toArray
, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту. - Исходная очередь должна остаться неизменной
- Дублирования кода быть не должно
- Исходный код тестов
- Откомпилированные тесты
- Реализовать метод
- Сложная
- Реализовать методы
push
– добавить элемент в начало очередиpeek
– вернуть последний элемент в очередиremove
– вернуть и удалить последний элемент из очереди
- Исходный код тестов
- Откомпилированные тесты
- Реализовать методы
Модификации
- Базовая
- Класс
BinarySearch
должен находиться в пакетеsearch
- Исходный код тестов
- Откомпилированные тесты
- Класс
- Простая
- Если в массиве
a
отсутствует элемент, равныйx
, то требуется вывести индекс вставки в формате, определенном вArrays.binarySearch
. - Класс должен иметь имя
BinarySearchMissing
- Исходный код тестов
- Откомпилированные тесты
- Если в массиве
- Сложная
- Требуется вывести два числа: начало и длину диапазона элементов,
равных
x
. Если таких элементов нет, то следует вывести пустой диапазон, у которого левая граница совпадает с местом вставки элементаx
. - Не допускается использование типов
long
иBigInteger
. - Класс должен иметь имя
BinarySearchSpan
- Исходный код тестов
- Откомпилированные тесты
- Требуется вывести два числа: начало и длину диапазона элементов,
равных
Модификации
- Базовая
- Исходный код тестов: CalcMD5Test.java, HashChecker.java
- Откомпилированные тесты
- Для M3138, 39
- Класс должен иметь имя
CalcSHA256
и подсчитывать SHA-256 - Исходный код тестов
- Откомпилированные тесты
- Класс должен иметь имя
- Для M3136, 37
- Напишите простой аналог утилиты sha256sum
- Класс должен называться
SHA256Sum
- Список файлов для хэширования передается в виде аргументов командной строки
- Если список файлов пуст, то хэшируется стандартный ввод а именем файла считается
-
- Вывод хэшей осуществляется в формате
<хэш> *<имя файла>
- Исходный код тестов
- Откомпилированные тесты
Для того, чтобы протестировать базовую модификацию домашнего задания:
- Скачайте тесты (CalcMD5Test.jar)
-
Откомпилируйте
CalcMD5.java
-
Проверьте, что создался
CalcMD5.class
-
В каталоге, в котором находится
CalcMD5.class
выполните командуjava -jar <путь к CalcMD5Test.jar>
Например, если
CalcMD5Test.jar
находится в текущем каталоге, выполните командуjava -jar CalcMD5Test.jar