Модификации
- Сложная
- Класс должен иметь имя
CalcSHA256
и подсчитывать SHA-256
- Класс должен иметь имя
- Простая
- Напишите простой аналог утилиты sha256sum
- Класс должен называться
SHA256Sum
- Список файлов для хэширования передается в виде аргументов командной строки
- Если список файлов пуст, то хэшируется стандартный ввод а именем файла считается
-
- Вывод хэшей осуществляется в формате
<хэш> *<имя файла>
Модификации
- Базовая
- Класс
BinarySearch
должен находиться в пакетеsearch
- Класс
- Простая
- Если в массиве
a
отсутствует элемент, равныйx
, то требуется вывести индекс вставки в формате, определенном вArrays.binarySearch
. - Класс должен иметь имя
BinarySearchMissing
- Если в массиве
- Сложная
- Требуется вывести два числа: начало и длину диапазона элементов,
равных
x
. Если таких элементов нет, то следует вывести пустой диапазон, у которого левая граница совпадает с местом вставки элементаx
. - Не допускается использование типов
long
иBigInteger
. - Класс должен иметь имя
BinarySearchSpan
- Требуется вывести два числа: начало и длину диапазона элементов,
равных
Модификации
- Базовая
- Классы должны находиться в пакете
queue
- Классы должны находиться в пакете
- Простая
- Реализовать метод
toArray
, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту. - Исходная очередь должна остаться неизменной
- Дублирования кода быть не должно
- Реализовать метод
- Сложная
- Реализовать методы
push
– добавить элемент в начало очередиpeek
– вернуть последний элемент в очередиremove
– вернуть и удалить последний элемент из очереди
- Реализовать методы
Модификации
- Простая
- Добавить в интерфейс очереди и реализовать метод
toArray
, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту - Исходная очередь должна оставаться неизменной
- Дублирования кода быть не должно
- Добавить в интерфейс очереди и реализовать метод
- Сложная
- Добавить в интерфейс очереди и реализовать методы
- Исходная очередь должна остаться неизменной
- Тип возвращаемой очереди должен соответствовать типу исходной очереди
- Взаимный порядок элементов должен сохраняться
- Дублирования кода быть не должно
Модификации
- Базовая
- Реализовать интерфейс
Expression
- Реализовать интерфейс
- Простая
- Реализовать интерфейс
DoubleExpression
- Реализовать интерфейс
- Сложная
- Реализовать интерфейсы
DoubleExpression
иTripleExpression
- Реализовать интерфейсы
Модификации
- Базовая
- Класс
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.
Модификации
- Базовая
- Класс
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.
Модификации
- Базовая
- Класс
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
без проверки на переполнение.
Модификации
- Базовая
- Код должен находиться в файле
functionalExpression.js
.
- Код должен находиться в файле
- Простая. Дополнительное реализовать поддержку:
- переменных:
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.
- переменных:
Модификации
- Базовая
- Код должен находиться в файле
objectExpression.js
.
- Код должен находиться в файле
- Модификация. Дополнительное реализовать поддержку:
- унарных операций:
Square
(square
) — возведение в квадрат,3 square
равно 9;Sqrt
(sqrt
) — извлечение квадратного корня из модуля аргумента,-9 sqrt
равно 3;
- унарных операций:
- Модификация. Дополнительное реализовать поддержку:
- бинарных операций:
Power
(pow
) — возведение в степень,2 3 pow
равно 8;Log
(log
) — логарифм абсолютного значения аргумента по абсолютному значению основания-2 -8 log
равно 3;
- бинарных операций:
Модификации
- Базовая
- Код должен находиться в файле
objectExpression.js
.
- Код должен находиться в файле
- Простая. Дополнительное реализовать поддержку:
- унарных операций:
ArcTan
(atan
) — арктангенс,(atan 2)
примерно равно 1.1;Exp
(Exp
) — экспонента,(exp 3)
примерно равно 20;
- унарных операций:
- Сложная. Дополнительное реализовать поддержку выражений в постфиксной записи:
(2 3 +)
равно 5
Модификации
- Базовая
- Код должен находиться в файле
linear.clj
.
- Код должен находиться в файле
- Простая
- Добавьте операции поэлементного сложения (
s+
), вычитания (s-
) и умножения (s*
) чисел и векторов любой (в том числе, переменной) формы. Например,(s+ [[1 2] 3] [[4 5] 6])
должно быть равно[[5 7] 9]
.
- Добавьте операции поэлементного сложения (
- Сложная
- Назовем тензором многомерную прямоугольную таблицу чисел.
- Форма тензора – последовательность чисел
(s1..n)=(s1, s2, …, sn), где
n – размерность тензора, а si – число элементов
по i-ой оси.
Например, форма тензора
[ [ [2 3 4] [5 6 7] ] ]
равна (1, 2, 3), а форма1
равна (). - Тензор формы (s1..n) может быть распространен (broadcast)
до тензора формы (u1..m), если (si..n) является
суффиксом (u1..m). Для этого, исходный тензор копируется
по недостающим осям.
Например, распространив тензор
[ [2] [3] ]
формы (2, 1) до формы (3, 2, 1) получим[ [ [2] [3] ] [ [2] [3] ] [ [2] [3] ] ]
, а распространив1
до формы (2, 3) получим[ [1 1 1] [1 1 1] ]
. - Тензоры называются совместимыми, если один из них может быть распространен до формы другого. Например, тензоры формы (3, 2, 1) и (2, 1) совместимы, а (3, 2, 1) и (1, 2) – нет. Числа совместимы с тензорами любой формы.
- Добавьте операции поэлементного сложения (
b+
), вычитания (b-
) и умножения (b*
) совместимых тензоров. Если формы тензоров не совпадают, то тензоры меньшей размерности должны быть предварительно распространены до тензоров большей размерности. Например,(b+ 1 [ [10 20 30] [40 50 60] ] [100 200 300] )
должно быть равно[ [111 221 331] [141 251 361] ]
.
Модификации
- Базовая
- Код должен находиться в файле
expression.clj
.
- Код должен находиться в файле
- Модификация. Дополнительное реализовать поддержку:
- унарных операций:
Sinh
(sinh
) — гиперболический синус,(sinh 3)
немного больше 10;Cosh
(cosh
) — гиперболический косинус,(cosh 3)
немного меньше 10.
- унарных операций: