Часть условий можно найти здесь.
Модификации
- Базовая
- Код должен находиться в файле
tree-map.pl
. - Исходный код тестов
- Запускать c аргументом
easy
илиhard
- Запускать c аргументом
- Код должен находиться в файле
- MinMax
- Добавьте правила:
map_minKey(Map, Key)
, возвращающее минимальный ключ в дереве,map_maxKey(Map, Key)
, возвращающее максимальный ключ в дереве.
- Исходный код тестов
- Добавьте правила:
- Replace
- Добавьте правило
map_replace(Map, Key, Value, Result)
, заменяющего значения ключа на указанное, если ключ присутствует. - Исходный код тестов
- Добавьте правило
- FloorKey
- Добавьте правило
map_floorKey(Map, Key, FloorKey)
, возвращающее максимальный ключ, меньший либо равный заданному. - Исходный код тестов
- Добавьте правило
- CeilingKey
- Добавьте правило
map_ceilingKey(Map, Key, CeilingKey)
, возвращающее минимальный ключ, больший либо равный заданному. - Исходный код тестов
- Добавьте правило
- SubmapSize
- Добавьте правило
map_submapSize(Map, FromKey, ToKey, Size)
, возвращающее число ключей в диапазоне[FromKey, ToKey)
. - Исходный код тестов
- Добавьте правило
Модификации
- Базовая
- Код должен находиться в файле
primes.pl
. - Исходный код тестов
- Запускать c аргументом
easy
,hard
илиbonus
- Запускать c аргументом
- Код должен находиться в файле
- Unique
- Добавьте правило
unique_prime_divisors(N, Divisors)
, возвращающее простые делители без повторов - Исходный код тестов
- Добавьте правило
- Palindrome
- Добавьте правило
prime_palindrome(N, K)
, определяющее, является лиN
простым палиндромом вK
-ичной системе счисления - Исходный код тестов
- Добавьте правило
- Nth
- Добавьте правило
nth(N, P)
, подсчитывающееN
-ое простое число - Исходный код тестов
- Добавьте правило
- Lcm
- Добавьте правило
lcm(A, B, LCM)
, подсчитывающее НОК(A
,B
) через разложение на простые множители - Исходный код тестов
- Добавьте правило
Для запуска тестов можно использовать скрипты TestProlog.cmd и TestProlog.sh
- Репозиторий должен быть скачан целиком.
- Скрипты должны находиться в каталоге
prolog
(их нельзя перемещать, но можно вызывать из других каталогов). - Полное имя класса теста указывается в качестве первого аргумента командной строки,
например,
prtest.primes.PrologPrimesTest
. - Тестируемое решение должно находиться в текущем каталоге.
Запуск Prolog
Лекция 1. Введение в Пролог
Лекция 2. ООП в Prolog
Модификации
- Базовая
- Код должен находиться в файле
expression.clj
. - Исходный код тестов
- Запускать c аргументом
easy
илиhard
- Запускать c аргументом
- Код должен находиться в файле
- Variables. Дополнительно реализовать поддержку:
- Переменных, состоящих из произвольного количества букв
XYZ
в любом регистре- Настоящее имя переменной определяется первой буквой ее имени
- Исходный код тестов
- Переменных, состоящих из произвольного количества букв
- PowLog. Дополнительно реализовать поддержку:
- Бинарных правоассоциативных операций максимального приоритета:
Pow
(**
) – возведения в степень:4 ** 3 ** 2
равно4 ** (3 ** 2)
равно 262144Log
(//
) – взятия логарифма:8 // 9 // 3
равно8 // (9 // 3)
равно 3
- Исходный код тестов
- Бинарных правоассоциативных операций максимального приоритета:
- Bitwise. Дополнительно реализовать поддержку:
- Побитовых операций
And
(&
) – и:5 & 6
равно 4Or
(|
) - или:5 & 6
равно 7Xor
(^
) - исключающее или:5 ^ 6
примерно равно 1.66881E-308- для реализации операций используйте doubleToLongBits и longBitsToDouble
- операции по увеличению приоритета:
^
,|
,&
,+
и-
,*
и/
- Исходный код тестов
- Побитовых операций
- ImplIff. Сделать модификацию Bitwise и дополнительно реализовать поддержку:
- Побитовых операций
Impl
(=>
) – импликация (правоассоциативна):4 => 1
примерно равно -2Iff
(<=>
) - тогда и только тогда:2 <=> 6
примерно равно -1.34827E308- операции по увеличению приоритета:
<=>
,=>
,^
,|
,&
,+
и-
,*
и/
- Исходный код тестов
- Побитовых операций
Модификации
- Базовая
- Код должен находиться в файле
expression.clj
. - Исходный код тестов
- Запускать c аргументом
easy
илиhard
- Запускать c аргументом
- Код должен находиться в файле
- SquareSqrt. Дополнительно реализовать поддержку:
- унарных операций:
Square
(square
) – возведение в квадрат,(square 3)
равно 9;Sqrt
(sqrt
) – извлечение квадратного корня из абсолютной величины аргумента,(sqrt -9)
равно 3.
- Исходный код тестов
- унарных операций:
- PwLg. Дополнительно реализовать поддержку:
- бинарных операций:
Pw
(pw
) – возведение в степень,(pow 2 3)
равно 8;Lg
(lg
) – логарифм абсолютной величины по основанию абсолютной величины,(lg -8 -2)
равно 3.
- Исходный код тестов
- бинарных операций:
- ExpLn. Дополнительно реализовать поддержку:
- унарных операций:
Exp
(exp
) – экспонента,(exp 8)
примерно равно 2981;Ln
(Ln
) – натуральный логарифм абсолютной величины,(lg 2981)
примерно равно 8.
- Исходный код тестов
- унарных операций:
- SumAvg. Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
Sum
(sum
) – сумма,(sum 1 2 3)
равно 6;Avg
(avg
) – арифметическое среднее,(avg 1 2 3)
равно 2;
- Исходный код тестов
- операций произвольного числа аргументов:
- SumexpSoftmax. Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
Sumexp
(sumexp
) – сумма экспонент,(sumexp 8 8 9)
примерно равно 14065;Softmax
(Softmax
) – softmax первого аргумента,(softmax 1 2 3)
примерно равно 0.09;
- Исходный код тестов
- операций произвольного числа аргументов:
Модификации
- Базовая
- Код должен находиться в файле
clojure-solutions/expression.clj
. - Исходный код тестов
- Запускать c аргументом
easy
илиhard
- Запускать c аргументом
- Код должен находиться в файле
- PwLg. Дополнительно реализовать поддержку:
- бинарных операций:
pw
– возведение в степень,(pow 2 3)
равно 8;lg
– логарифм абсолютной величины по основанию абсолютной величины,(lg -8 -2)
равно 3.
- Исходный код тестов
- бинарных операций:
- ExpLn. Дополнительно реализовать поддержку:
- унарных операций:
exp
– экспонента,(exp 8)
примерно равно 2981;ln
– натуральный логарифм абсолютной величины,(ln -2981)
примерно равно 8.
- Исходный код тестов
- унарных операций:
- MinMax. Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
min
– минимум,(min 1 2 6)
равно 1;max
– максимум,(min 1 2 6)
равно 6;
- Исходный код тестов
- операций произвольного числа аргументов:
- MedAvg. Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
med
– медиана,(med 1 2 6)
равно 2;avg
– среднее,(avg 1 2 6)
равно 3;
- Исходный код тестов
- операций произвольного числа аргументов:
- SumexpSoftmax. Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
sumexp
– сумма экспонент,(sumexp 8 8 9)
примерно равно 14065;softmax
– softmax первого аргумента,(softmax 1 2 3)
примерно равно 0.09;
- Исходный код тестов
- операций произвольного числа аргументов:
Модификации
- Базовая
- Код должен находиться в файле
linear.clj
. - Исходный код тестов
- Код должен находиться в файле
- Shapeless
- Добавьте операции поэлементного сложения (
s+
), вычитания (s-
) и умножения (s*
) чисел и векторов любой (в том числе, переменной) формы. Например,(s+ [[1 2] 3] [[4 5] 6])
должно быть равно[[5 7] 9]
. - Исходный код тестов
- Добавьте операции поэлементного сложения (
- Cuboid
- Назовем кубоидом трехмерную прямоугольную таблицу чисел.
- Добавьте операции поэлементного сложения (
c+
), вычитания (c-
), умножения (c*
) и деления (cd
) кубоидов. Например,(с+ [[[1] [2]] [[3] [4]]] [[[5] [6]] [[7] [8]]])
должно быть равно[[[6] [8]] [[10] [12]]]
. - Исходный код тестов
- Tensor
- Назовем тензором многомерную прямоугольную таблицу чисел.
- Добавьте операции поэлементного сложения (
t+
), вычитания (t-
) и умножения (t*
) тензоров. Например,(t+ [[1 2] [3 4]] [[5 6] [7 8]])
должно быть равно[[6 8] [10 12]]
. - Исходный код тестов
- Broadcast
- Назовем тензором многомерную прямоугольную таблицу чисел.
- Форма тензора – последовательность чисел
(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*
) и деления умножения (bd
) совместимых тензоров. Если формы тензоров не совпадают, то тензоры меньшей размерности должны быть предварительно распространены до тензоров большей размерности. Например,(b+ 1 [ [10 20 30] [40 50 60] ] [100 200 300] )
должно быть равно[ [111 221 331] [141 251 361] ]
. - Исходный код тестов
Для запуска тестов можно использовать скрипты TestClojure.cmd и TestClojure.sh
- Репозиторий должен быть скачан целиком.
- Скрипты должны находиться в каталоге
clojure
(их нельзя перемещать, но можно вызывать из других каталогов). - Полное имя класса теста указывается в качестве аргумента командной строки,
например,
cljtest.linear.LinearBinaryTest
. - Тестируемое решение должно находиться в текущем каталоге.
Запуск Clojure
- Консоль: Windows, *nix
- Интерактивный:
RunClojure
- С выражением:
RunClojure --eval "<выражение>"
- Скрипт:
RunClojure <файл скрипта>
- Справка:
RunClojure --help
- Интерактивный:
- IDE
- IntelliJ Idea: плагин Cursive
- Eclipse: плагин Counterclockwise
Лекция 1. Функции
Лекция 2. Внешний мир
Лекция 3. Объекты и вычисления
Лекция 4. Комбинаторные парсеры
Модификации
- Базовая
- Код должен находиться в файле
objectExpression.js
. - Исходный код тестов
- Запускать c аргументом
easy
илиhard
- Запускать c аргументом
- Код должен находиться в файле
- PrefixAtanExp. Дополнительно реализовать поддержку:
- унарных операций:
ArcTan
(atan
) – арктангенс,(atan 2)
примерно равно 1.1;Exp
(Exp
) – экспонента,(exp 3)
примерно равно 20;
- Исходный код тестов
- унарных операций:
- PrefixSinhCosh. Дополнительно реализовать поддержку:
- унарных операций:
Sinh
(sinh
) – гиперболический синус,(sinh 3)
немного больше 10;Cosh
(cosh
) – гиперболический косинус,(cosh 3)
немного меньше 10;
- Исходный код тестов
- унарных операций:
- PrefixSumAvg. Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
Sum
(sum
) – сумма,(sum 1 2 3)
равно 6;Avg
(avg
) – арифметическое среднее,(avg 1 2 3)
равно 2;
- Исходный код тестов
- операций произвольного числа аргументов:
- PostfixSumAvg. Дополнительно реализовать поддержку:
- выражений в постфиксной записи:
(2 3 +)
равно 5 - унарных операций:
Sum
(sum
) – сумма,(1 2 3 sum)
равно 6;Avg
(avg
) – арифметическое среднее,(1 2 3 avg)
равно 2;
- Исходный код тестов
- выражений в постфиксной записи:
- PostfixSumexpSoftmax. Дополнительно реализовать поддержку:
- выражений в постфиксной записи:
(2 3 +)
равно 5 - унарных операций:
Sumexp
(sumexp
) – сумма экспонент,(8 8 9 sumexp)
примерно равно 14065;Softmax
(softmax
) – softmax первого аргумента,(1 2 3 softmax)
примерно 0.09;
- Исходный код тестов
- выражений в постфиксной записи:
- PostfixMeanVar. Дополнительно реализовать поддержку:
- выражений в постфиксной записи:
(2 3 +)
равно 5 - операций произвольного числа аргументов:
Mean
(mean
) – математическое ожидание аргументов,(1 2 6 mean)
равно 3;Var
(var
) – дисперсию аргументов,(2 5 11 var)
равно 14;
- Исходный код тестов
- выражений в постфиксной записи:
Модификации
- Базовая
- Код должен находиться в файле
objectExpression.js
. - Исходный код тестов
- Запускать c аргументом
easy
,hard
илиbonus
.
- Запускать c аргументом
- Код должен находиться в файле
- PowLog. Дополнительно реализовать поддержку:
- бинарных операций:
Power
(pow
) – возведение в степень,2 3 pow
равно 8;Log
(log
) – логарифм абсолютного значения аргумента по абсолютному значению основания-2 -8 log
равно 3;
- Исходный код тестов
- бинарных операций:
- SinhCosh. Дополнительно реализовать поддержку:
- унарных функций:
Sinh
(sinh
) – гиперболический синус,3 sinh
немного больше 10;Cosh
(cosh
) – гиперболический косинус,3 cosh
немного меньше 10;
- Исходный код тестов
- унарных функций:
- MinMax. Дополнительно реализовать поддержку:
- функций:
Min3
(min3
) – минимум из трех аргументов,1 2 3 min
равно 1;Max5
(max5
) – максимум из пяти аргументов,1 2 3 4 5 max
равно 5;
- Исходный код тестов
- функций:
- Gauss. Дополнительно реализовать поддержку:
- функций:
Gauss
(gauss
) – функция Гаусса; от четырех аргументов:a
,b
,c
,x
.
- Исходный код тестов
- функций:
Модификации
- Базовая
- Код должен находиться в файле
functionalExpression.js
. - Исходный код тестов
- Запускать c аргументом
hard
илиeasy
;
- Запускать c аргументом
- Код должен находиться в файле
- Mini
- Не поддерживаются бинарные операции
- Код находится в файле functionalMiniExpression.js.
- Исходный код тестов
- Запускать c аргументом
hard
илиeasy
;
- Запускать c аргументом
- Cube. Дополнительно реализовать поддержку:
- переменных:
y
,z
; - унарных функций:
cube
– возведение в куб,2 cube
равно 8;cuberoot
– кубический корень,-8 cuberoot
равно -2;
- Исходный код тестов
- переменных:
- OneIffAbs. Дополнительно реализовать поддержку:
- переменных:
y
,z
; - констант:
one
– 1;two
– 2;
- операций:
abs
– абсолютное значение,-2 abs
равно 2;iff
– условный выбор: если первый аргумент неотрицательный, вернуть второй аргумент, иначе вернуть первый третий аргумент.one two 3 iff
равно 2-1 -2 -3 iff
равно -30 one two iff
равно 1;
- Исходный код тестов
- Запускать c аргументом
hard
илиeasy
- Запускать c аргументом
- переменных:
- PieAvgMed. Дополнительно реализовать поддержку:
- переменных:
y
,z
; - констант:
pi
– π;e
– основание натурального логарифма;
- операций:
avg5
– арифметическое среднее пяти аргументов,1 2 3 4 5 avg5
равно 7.5;med3
– медиана трех аргументов,1 2 -10 med3
равно 1.
- Исходный код тестов
- Запускать c аргументом
hard
илиeasy
- Запускать c аргументом
- переменных:
- PieSinCos. Дополнительно реализовать поддержку:
- переменных:
y
,z
; - констант:
pi
– π;e
– основание натурального логарифма;
- операций:
sin
– синус,pi sin
равно 0;cos
– косинус,pi cos
равно -1.
- Исходный код тестов
- Запускать c аргументом
hard
илиeasy
- Запускать c аргументом
- переменных:
Запуск тестов
- Для запуска тестов используется GraalJS (часть проекта GraalVM, вам не требуется их скачивать отдельно)
- Для запуска тестов можно использовать скрипты TestJS.cmd и TestJS.sh
- Репозиторий должен быть скачан целиком.
- Скрипты должны находиться в каталоге
javascript
(их нельзя перемещать, но можно вызывать из других каталогов).
- Для самостоятельно запуска из консоли необходимо использовать командную строку вида:
java -ea --module-path=<js>/graal --class-path <js> jstest.functional.FunctionalExpressionTest {hard|easy}
, где-ea
– включение проверок времени исполнения;--module-path=<js>/graal
путь к модулям Graal (здесь и далее<js>
путь к каталогуjavascript
этого репозитория);--class-path <js>
путь к откомпилированным тестам;- {
hard
|easy
} указание тестируемой модификации.
- При запуске из 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.functional.FunctionalExpressionTest
– неверно указан--class-path
;Error: Could not find or load main class <other class>
– неверно указано полное имя класса теста;Exception in thread "main" java.lang.AssertionError: You should enable assertions by running 'java -ea jstest.functional.FunctionalExpressionTest'
– не указана опция-ea
;First argument should be one of: "easy", "hard", found: XXX
– неверно указана сложность;Exception in thread "main" jstest.EngineException: Script 'functionalExpression.js' not found
– в текущем каталоге отсутствует решение (functionalExpression.js
)
Запуск примеров
- В браузере
- Из консоли
- на Java: RunJS.cmd, RunJS.sh
- на node.js:
node RunJS.node.js
Лекция 1. Типы и функции
- Типы
- Функции
- Функции высшего порядка.
Обратите внимание на реализацию функции
mCurry
.
Лекция 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
.
- Исходный код тестов
- Класс
- Сmm
- Дополнительно реализовать унарные операции:
count
– число установленных битов,count 5
равно 2.
- Дополнительно реализовать бинарную операцию (минимальный приоритет):
min
– минимум,2 min 3
равно 2;max
– максимум,2 max 3
равно 3.
- Исходный код тестов
- Дополнительно реализовать унарные операции:
- Ls
- Дополнительно реализовать поддержку режимов:
l
– вычисления вlong
без проверки на переполнение;s
– вычисления вshort
без проверки на переполнение.
- Исходный код тестов
- Дополнительно реализовать поддержку режимов:
- CmmUls
- Реализовать операции из модификации Cmm.
- Дополнительно реализовать поддержку режимов:
u
– вычисления вint
без проверки на переполнение;l
– вычисления вlong
без проверки на переполнение;s
– вычисления вs
без проверки на переполнение.
- Исходный код тестов
- CmmUfb
- Реализовать операции из модификации Cmm.
- Дополнительно реализовать поддержку режимов:
u
– вычисления вint
без проверки на переполнение;f
– вычисления вfloat
без проверки на переполнение;b
– вычисления вbyte
без проверки на переполнение.
- Исходный код тестов
Модификации
- Базовая
- ToArray
- Добавить в интерфейс очереди и реализовать метод
toArray
, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту - Исходная очередь должна оставаться неизменной
- Дублирования кода быть не должно
- Исходный код тестов
- Откомпилированные тесты
- Добавить в интерфейс очереди и реализовать метод
- Functions
- Добавить в интерфейс очереди и реализовать методы
- Исходная очередь должна остаться неизменной
- Тип возвращаемой очереди должен соответствовать типу исходной очереди
- Взаимный порядок элементов должен сохраняться
- Дублирования кода быть не должно
- Исходный код тестов
- Откомпилированные тесты
- IfWhile
- Добавить в интерфейс очереди и реализовать методы
removeIf(predicate)
– удалить элементы, удовлетворяющие предикатуretainIf(predicate)
– удалить элементы, не удовлетворяющие предикатуtakeWhile(predicate)
– сохранить подряд идущие элементы, удовлетворяющие предикатуdropWhile(predicate)
– удалить подряд идущие элементы, не удовлетворяющие предикату
- Взаимный порядок элементов должен сохраняться
- Дублирования кода быть не должно
- Исходный код тестов
- Откомпилированные тесты
- Добавить в интерфейс очереди и реализовать методы
Модификации
- Базовая
- Классы должны находиться в пакете
queue
- Исходный код тестов
- Откомпилированные тесты
- Классы должны находиться в пакете
- ToArray (простая)
- Реализовать метод
toArray
, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту. - Исходная очередь должна остаться неизменной
- Дублирования кода быть не должно
- Исходный код тестов
- Откомпилированные тесты
- Реализовать метод
- ToStr (простая)
- Реализовать метод
toStr
, возвращающий строковое представление очереди в виде '[
' голова ',
' ... ',
' хвост ']
' - Исходный код тестов
- Откомпилированные тесты
- Реализовать метод
- Deque (сложная)
- Реализовать методы
push
– добавить элемент в начало очередиpeek
– вернуть последний элемент в очередиremove
– вернуть и удалить последний элемент из очереди
- Исходный код тестов
- Откомпилированные тесты
- Реализовать методы
- IndexedDeque
- Реализовать модификацию Deque
- Реализовать методы
get
– получить элемент по индексу, отсчитываемому с головыset
– заменить элемент по индексу, отсчитываемому с головы
- Исходный код тестов
- Откомпилированные тесты
Модификации
- Базовая
- Класс
BinarySearch
должен находиться в пакетеsearch
- Исходный код тестов
- Откомпилированные тесты
- Класс
- Missing
- Если в массиве
a
отсутствует элемент, равныйx
, то требуется вывести индекс вставки в формате, определенном вArrays.binarySearch
. - Класс должен иметь имя
BinarySearchMissing
- Исходный код тестов
- Откомпилированные тесты
- Если в массиве
- Span
- Требуется вывести два числа: начало и длину диапазона элементов,
равных
x
. Если таких элементов нет, то следует вывести пустой диапазон, у которого левая граница совпадает с местом вставки элементаx
. - Не допускается использование типов
long
иBigInteger
. - Класс должен иметь имя
BinarySearchSpan
- Исходный код тестов
- Откомпилированные тесты
- Требуется вывести два числа: начало и длину диапазона элементов,
равных
- Shift
- На вход подается отсортированный массив, циклически сдвинутый на
k
элементов. Требуется найтиk
. Все числа в массиве различны. - Класс должен иметь имя
BinarySearchShift
- Исходный код тестов
- Откомпилированные тесты
- На вход подается отсортированный массив, циклически сдвинутый на
Модификации
- Базовая
- Класс
ExpressionParser
должен реализовывать интерфейс Parser - Классы
CheckedAdd
,CheckedSubtract
,CheckedMultiply
,CheckedDivide
иCheckedNegate
должны реализовывать интерфейс TripleExpression - Нельзя использовать типы
long
иdouble
- Нельзя использовать методы классов
Math
иStrictMath
- Исходный код тестов
- Класс
- PowLog2
- Дополнительно реализуйте унарные операции:
log2
– логарифм по уснованию 2,log2 10
равно 3;pow2
– два в степени,pow2 4
равно 16.
- Исходный код тестов
- Дополнительно реализуйте унарные операции:
- PowLog
- Дополнительно реализуйте бинарные операции (максимальный приоритет):
**
– возведение в степень,2 ** 3
равно 8;//
– логарифм,10 // 2
равно 3.
- Исходный код тестов
- Дополнительно реализуйте бинарные операции (максимальный приоритет):