ITMO CT 2023-y1-spring
Course by kgeorgiy
Модификации
- Base
- Код должен находиться в файле
prolog-solutions/expression.pl.
- Код должен находиться в файле
- SinCos (32, 34). Дополнительно реализовать поддержку:
- унарных операций:
op_sin(sin) – синус,sin(4846147)примерно равно 1;op_cos(cos) – косинус,cos(5419351)примерно равно 1.
- унарных операций:
- SinhCosh (33, 35). Дополнительно реализовать поддержку:
- унарных операций:
op_sinh(sinh) – гиперболический синус,sinh(3)немного больше 10;op_cosh(cosh) – гиперболический косинус,cosh(3)немного меньше 10.
- унарных операций:
- Variables. Дополнительно реализовать поддержку:
- Переменных, состоящих из произвольного количества букв
XYZв любом регистре- Настоящее имя переменной определяется первой буквой ее имени
- Переменных, состоящих из произвольного количества букв
- VarBoolean (36, 37). Сделать модификацию Variables и дополнительно реализовать поддержку:
- Булевских операций
- Аргументы: число больше 0 →
true, иначе →false - Результат:
true→ 1,false→ 0 op_not(!) - отрицание:!5равно 0op_and(&&) – и:5 & -6равно 0op_or(||) - или:5 & -6равно 1op_xor(^^) - исключающее или:5 ^ -6равно 1
- Аргументы: число больше 0 →
- Булевских операций
- VarImplIff (38, 39). Сделать модификацию Boolean и дополнительно реализовать поддержку:
- Булевских операций
op_impl(->) – импликация (правоассоциативна):-4 -> 1равно 1op_iff(<->) - тогда и только тогда:2 <-> 6равно 1
- Булевских операций
Модификации
- Базовая
- Код должен находиться в файле
prolog-solutions/tree-map.pl.
- Код должен находиться в файле
- Keys (32, 34)
- Добавьте правило:
map_keys(Map, Keys), возвращающее ключи в порядке возрастания.
- Добавьте правило:
- Value (33, 35)
- Добавьте правило:
map_values(Map, Values), возвращающее значения в порядке возрастания ключей.
- Добавьте правило:
- PutIfAbsent (36, 37)
- Добавьте правило
map_putIfAbsent(Map, Key, Value, Result), добавляющее новый ключ и значение.
- Добавьте правило
- PutCeiling (38, 39)
- Добавьте правила:
map_getCeiling(Map, Key, Value), возвращающее значение, соответствующее минимальному ключу, большему либо равному заданному;map_putCeiling(Map, Key, Value, Result), заменяющее значение, соответствующее минимальному ключу, большему либо равному заданному (если такой существует).
- Добавьте правила:
Модификации
- Базовая
- Код должен находиться в файле
prolog-solutions/primes.pl.
- Код должен находиться в файле
- Square (32, 34)
- Добавьте правило
square_divisors(N, D), возвращающее делители N²:square_divisors(6, [2, 2, 3, 3]).
- Добавьте правило
- Cube (33, 35)
- Добавьте правило
cube_divisors(N, D), возвращающее делители N³:cube_divisors(6, [2, 2, 2, 3, 3, 3]).
- Добавьте правило
- Compact (36, 37)
- Добавьте правило
compact_prime_divisors(N, CDs), гдеCDs— список пар (простое, степень):compact_prime_divisors(120, [(2, 3), (3, 1), (5, 1)]).
- Добавьте правило
- Divisors (38, 39)
- Добавьте правило
divisors_divisors(N, Divisors), гдеDivisors— список разложений на простые делители делителей числаN:divisors_divisors(12, [[], [2], [3], [2,2], [2,3], [2,2,3]]).
- Добавьте правило
Для запуска тестов можно использовать скрипты TestProlog.cmd и TestProlog.sh
- Репозиторий должен быть скачан целиком.
- Скрипты должны находиться в каталоге
prolog(их нельзя перемещать, но можно вызывать из других каталогов). - Полное имя класса теста указывается в качестве первого аргумента командной строки,
например,
prtest.primes.PrimesTest. - Тестируемое решение должно находиться в текущем каталоге.
Лекция 1. Факты, правила и вычисления
Лекция 2. Задачи, унификация и объекты
Лекция 3. Преобразование в строку и разбор
Модификации
- Base
- Код должен находиться в файле
clojure-solutions/expression.clj.
- Код должен находиться в файле
- Variables. Дополнительно реализовать поддержку:
- Переменных, состоящих из произвольного количества букв
XYZв любом регистре- Настоящее имя переменной определяется первой буквой ее имени
- Переменных, состоящих из произвольного количества букв
- IncDec (32, 34). Сделать модификацию Variables и дополнительно реализовать поддержку:
- Унарных операций:
Inc(++) – инкремент,(33 ++)равно 34;Dec(--) – декремент,(33 --)равно 32.
- Унарных операций:
- UPowLog (33, 35). Сделать модификацию Variables и дополнительно реализовать поддержку:
- Унарных операций:
UPow(**) – возведение в степень,(8 **)примерно равно 2981;ULog(//) – натуральный логарифм абсолютной величины,(2981 //)примерно равно 8.
- Унарных операций:
- Boolean (36, 37). Сделать модификацию Variables и дополнительно реализовать поддержку:
- Булевских операций
- Аргументы: число больше 0 →
true, иначе →false - Результат:
true→ 1,false→ 0 Not(!) - отрицание:!5равно 0And(&&) – и:5 & -6равно 0Or(||) - или:5 & -6равно 1Xor(^^) - исключающее или:5 ^ -6равно 1- операции по увеличению приоритета:
^^,||,&&, операции базовой модификации
- Аргументы: число больше 0 →
- Булевских операций
- ImplIff (38, 39). Сделать модификацию Boolean и дополнительно реализовать поддержку:
- Булевских операций
Impl(->) – импликация (правоассоциативна):-4 -> 1равно 1Iff(<->) - тогда и только тогда:2 <-> 6равно 1- операции по увеличению приоритета:
<->,->, операции модификации Boolean
- Булевских операций
Модификации
- Базовая
- Код должен находиться в файле
clojure-solutions/expression.clj.
- Код должен находиться в файле
- SinCos (32, 34). Дополнительно реализовать поддержку:
- унарных операций:
Sin(sin) – синус,(sin 4846147)примерно равно 1;Cos(cos) – косинус,(cos 5419351)примерно равно 1.
- унарных операций:
- SinhCosh (33, 35). Дополнительно реализовать поддержку:
- унарных операций:
Sinh(sinh) – гиперболический синус,(sinh 3)немного больше 10;Cosh(cosh) – гиперболический косинус,(cosh 3)немного меньше 10.
- унарных операций:
- MeansqRMS (36, 37). Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
Meansq(meansq) – среднее квадратов,(meansq 2 10 22)равно 196;RMS(rms) – Root mean square,(rms 2 10 22)равно 14;
- операций произвольного числа аргументов:
- SumexpLSE (38, 39). Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
Sumexp(sumexp) – сумма экспонент,(sumexp 2 3 16)примерно равно 8886137;LSE(lse) – LogSumExp,(lse 2 3 16)примерно равно 16;
- операций произвольного числа аргументов:
Модификации
- Base
- Код должен находиться в файле
clojure-solutions/expression.clj.
- Код должен находиться в файле
- ExpLn (32, 34). Дополнительно реализовать поддержку:
- унарных операций:
exp– экспонента,(exp 8)примерно равно 2981;ln– натуральный логарифм абсолютной величины,(ln -2981)примерно равно 8.
- унарных операций:
- ArcTan (33, 35). Дополнительно реализовать поддержку:
- операций:
atan– арктангенс,(atan 1256)примерно равно 1.57;atan2– арктангенс,(atan2 841 540)примерно равно 1.
- операций:
- SumexpLSE (36, 37). Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
sumexp– сумма экспонент,(sumexp 2 3 16)примерно равно 8886137;lse– LogSumExp,(lse 2 3 16)примерно равно 16;
- операций произвольного числа аргументов:
- MeansqRMS (38, 39). Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
meansq– среднее квадратов,(meansq 2 10 22)равно 196;rms– Root mean square,(rms 2 10 22)равно 14;
- операций произвольного числа аргументов:
Модификации
- Базовая
- Код должен находиться в файле
clojure-solutions/linear.clj.
- Код должен находиться в файле
- Shapeless (32 - 35)
- Добавьте операции поэлементного
сложения (
s+), вычитания (s-), умножения (s*) и деления (sd) чисел и векторов любой (в том числе, переменной) формы. Например,(s+ [[1 2] 3] [[4 5] 6])должно быть равно[[5 7] 9].
- Добавьте операции поэлементного
сложения (
- Tensor (36, 37)
- Назовем тензором многомерную прямоугольную таблицу чисел.
- Добавьте операции поэлементного
сложения (
t+), вычитания (t-), умножения (t*) и деления (td) тензоров. Например,(t+ [[1 2] [3 4]] [[5 6] [7 8]])должно быть равно[[6 8] [10 12]].
- Broadcast (38, 39)
- Назовем тензором многомерную прямоугольную таблицу чисел.
- Форма тензора – последовательность чисел
(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).
Для этого, элементы тензора копируются по недостающим осям.
Например, распространив тензор
[[1 2]]формы (1, 2) до формы (1, 2, 3) получим[[[1 1 1] [2 2 2]]], а распространив1до формы (2, 3) получим[[1 1 1] [1 1 1]]. - Тензоры называются совместимыми, если один из них может быть распространен до формы другого. Например, тензоры формы (1, 2, 3) и (1, 2) совместимы, а (1, 2, 3) и (2, 1) – нет. Числа совместимы с тензорами любой формы.
- Добавьте операции поэлементного
сложения (
tb+), вычитания (tb-), умножения (tb*) и деления (tbd) совместимых тензоров. Если формы тензоров не совпадают, то тензоры меньшей размерности должны быть предварительно распространены до тензоров большей размерности. Например,(tb+ 1 [[10 20 30] [40 50 60]] [100 200])должно быть равно[[111 121 131] [241 251 261]]. - Исходный код тестов
Документация
Запуск Clojure
- Консоль: Windows, *nix
- Интерактивный:
RunClojure - С выражением:
RunClojure --eval "<выражение>" - Скрипт:
RunClojure <файл скрипта> - Справка:
RunClojure --help
- Интерактивный:
- IDE
- IntelliJ Idea: плагин Cursive
- Eclipse: плагин Counterclockwise
Лекция 1. Функции
Лекция 2. Внешний мир
Лекция 3. Объекты
- Прототипное наследование
- Библиотека для ДЗ proto.clj
- Java-классы
- Изменяемое состояние
Лекция 4. Комбинаторные парсеры
- Базовые функции
- Комбинаторы
- Библиотека для ДЗ parser.clj
- JSON
Лекция 5. Макросы и основания математики
Это задание преднозначено для проверки правильности настройки Clojure. Вам надо проверить, что оно успешно проверяется на вашем компьютере.
Для запуска тестов используются скрипты TestClojure.cmd и TestClojure.sh
- Репозиторий должен быть скачан целиком.
- Скрипты должны находиться в каталоге
clojure(их нельзя перемещать, но можно вызывать из других каталогов). - Тестируемое решение должно находиться в текущем каталоге.
- В качестве аргументов командной строки указывается
полное имя класса теста, сложность и модификация,
например,
cljtest.example.ExampleTest hard base.
Модификации
- base
- Код решения
clojure-solutions/example.clj - Исходный код тестов
- Запускать c аргументом
hardилиeasy.
- Запускать c аргументом
- Код решения
Модификации
- Base
- Код должен находиться в файле
javascript-solutions/objectExpression.js.
- Код должен находиться в файле
- SumAvg (32-35). Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
sum– сумма,(sum 1 2 3)равно 6;avg– среднее,(avg 1 2 3)равно 2;
- операций произвольного числа аргументов:
- Postfix (36-39). Дополнительно реализовать поддержку:
- Выражений в постфиксной записи:
(2 3 +)равно 5- функция
parsePostfix - метод
postfix
- Исходный код тестов
- Запускать c указанием модификации и сложности (
easyилиhard).
- Запускать c указанием модификации и сложности (
- Выражений в постфиксной записи:
- SumexpLSE (36, 37). Дополнительно реализовать поддержку:
- Операций произвольного числа аргументов:
Sumexp(sumexp) – сумма экспонент,(2 3 16 sumexp)примерно равно 8886137;LSE(lse) – LogSumExp,(2 3 16 lse)примерно равно 16;
- Операций произвольного числа аргументов:
- MeansqRMS (38, 39). Дополнительно реализовать поддержку:
- операций произвольного числа аргументов:
Meansq(meansq) – среднее квадратов,(2 10 22 meansq)равно 196;RMS(rms) – Root mean square,(2 10 22 rms)равно 14;
- операций произвольного числа аргументов:
Модификации
- Base
- Код должен находиться в файле
javascript-solutions/objectExpression.js.
- Код должен находиться в файле
- ExpLn (32, 34). Дополнительно реализовать поддержку:
- унарных функций:
Exp(exp) – экспонента,8 expпримерно равно 2981;Ln(Ln) – натуральный логарифм абсолютной величины,2981 lnпримерно равно 8.
- унарных функций:
- ArcTan (33, 35). Дополнительно реализовать поддержку:
- функций:
ArcTan(atan) – арктангенс,1256 atanпримерно равно 1.57;ArcTan2(atan2) – арктангенс,841 540 atan2примерно равно 1.
- функций:
- Distance (36, 37). Дополнительно реализовать поддержку:
- функций от
Nаргументов дляN=2..5:SumSqN(sumsqN) – сумма квадратов,3 4 sumsq2равно 25;DistanceN(distanceN) – длина вектора,3 4 distance2равно 5.
- функций от
- SumrecHMean (38, 39). Дополнительно реализовать поддержку:
- функций от
Nаргументов дляN=2..5:SumrecN(sumrecN) – сумма обратных величин,1 2 3 6 sumrec4равно 2;HMeanN(hmeanN) – среднее гармоническое,2 3 6 hmean3равно 3.
- функций от
Модификации
- Базовая
- Код должен находиться в файле
javascript-solutions/functionalExpression.js.
- Код должен находиться в файле
- OneTwo (32-39). Дополнительно реализовать поддержку:
- констант:
one– 1;two– 2;
- констант:
- SinCos (32, 34). Дополнительно реализовать поддержку:
- операций:
sin– синус,3.14159265 sinпримерно равно 0;cos– косинус,3.14159265 cosпримерно равно -1.
- операций:
- SinhCosh (33, 35). Дополнительно реализовать поддержку:
- операций:
sinh– гиперболический синус,(sinh 3)немного больше 10;cosh– гиперболический косинус,(cosh 3)немного меньше 10.
- операций:
- FP (36, 37). Дополнительно реализовать поддержку:
- операций:
*+(madd) – тернарный оператор произведение-сумма,2 3 4 *+равно 10;_(floor) – округление вниз2.7 _равно 2;^(ceil) – округление вверх2.7 ^равно 3.
- операций:
- ArgMinMax (38, 39). Дополнительно реализовать поддержку:
- операций:
argMin3– индекс минимального из трёх аргументов,3 4 1 argMin3равно 2;argMax3– индекс максимального из трёх аргументов,3 4 1 argMin3равно 1;argMin5– индекс минимального из пяти аргументов,3 4 1 5 6 argMin3равно 2;argMax5– индекс максимального из пяти аргументов,3 4 10 5 6 argMax3равно 2;
- операций:
Запуск примеров
- В браузере
- Из консоли
- на Java: RunJS.cmd, RunJS.sh
- на node.js:
node RunJS.node.js
Лекция 1. Типы и функции
- Типы
- Функции
- Функции высшего порядка.
Обратите внимание на реализацию функции
mCurry. Обратите внимание, что функцииarray.mapиarray.reduce(аналогleftFoldвходят в стандартную библиотеку). - Пример: вектора и матрицы.
Лекция 2. Объекты и замыкания
Лекция 3. Другие возможности
- Обработка ошибок
- Чего нет в JS
- Стандартная библиотека
- Работа со свойствами
- Методы и классы
- JS 6+
- Модули: объявление использование
- Простейший ввод-вывод
Это задание преднозначено для проверки правильности настройки JavaScript. Вам надо проверить, что оно успешно проверяется на вашем компьютере.
Запуск тестов
- Для запуска тестов используется GraalJS (часть проекта GraalVM, вам не требуется их скачивать отдельно)
- Для запуска тестов можно использовать скрипты TestJS.cmd и TestJS.sh
- Репозиторий должен быть скачан целиком.
- Скрипты должны находиться в каталоге
javascript(их нельзя перемещать, но можно вызывать из других каталогов). - В качестве аргументов командной строки указывается полное имя класса теста и модификация,
например
jstest.example.ExampleTest hard base.
- Для самостоятельно запуска из консоли необходимо использовать командную строку вида:
java -ea --module-path=<js>/graal --class-path <js> jstest.functional.FunctionalTest {hard|easy} <variant>, где-ea– включение проверок времени исполнения;--module-path=<js>/graalпуть к модулям Graal (здесь и далее<js>путь к каталогуjavascriptэтого репозитория);--class-path <js>путь к откомпилированным тестам;- {
hard|easy} указание тестируемой сложности; <variant>} указание тестируемой модификации.
- При запуске из 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-pathError: Could not find or load main class jstest.example.ExampleTest– неверно указан--class-path;Exception in thread "main" java.lang.AssertionError: You should enable assertions by running 'java -ea jstest.functional.FunctionalExpressionTest'– не указана опция-ea;Exception in thread "main" jstest.EngineException: Script 'example.js' not found– в текущем каталоге отсутствует решение (example.js)
Модификации
- base
- Код решения
java-solutions/example.js - Исходный код тестов
- Запускать c аргументом
hardилиeasy.
- Запускать c аргументом
- Код решения
Модификации
- Base
- Класс
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.
- Исходный код тестов
- Первый аргумент:
easyилиhard - Последующие аргументы: модификации
- Первый аргумент:
- Класс
- Ufs (32-35)
- Дополнительно реализуйте поддержку режимов:
u– вычисления вintбез проверки на переполнение;f– вычисления вfloatбез проверки на переполнение;s– вычисления вshortбез проверки на переполнение.
- Дополнительно реализуйте поддержку режимов:
- Asm (36-39)
- Дополнительно реализуйте унарные операции:
abs– модуль числа,abs -5равно 5;square– возведение в квадрат,square 5равно 25.
- Дополнительно реализуйте бинарную операцию (максимальный приоритет):
mod– взятие по модулю, приоритет как у умножения (1 + 5 mod 3равно1 + (5 mod 3)равно3).
- Дополнительно реализуйте унарные операции:
- Uls (36, 37)
- Дополнительно реализуйте поддержку режимов:
u– вычисления вintбез проверки на переполнение;l– вычисления вlongбез проверки на переполнение;s– вычисления вshortбез проверки на переполнение.
- Дополнительно реализуйте поддержку режимов:
- Ups (38, 39)
- Дополнительно реализуйте поддержку режимов:
u– вычисления вintбез проверки на переполнение;p– вычисления в целых числах по модулю 10079;s– вычисления вshortбез проверки на переполнение.
- Дополнительно реализуйте поддержку режимов:
Модификации
- Count (32, 34)
- Реализовать метод
count, возвращающий число вхождений элемента в очередь.
- Реализовать метод
- Index (33, 35)
- Реализовать метод
indexOf, возвращающий индекс первого вхождения элемента в очередь;lastIndexOf, возвращающий индекс последнего вхождения элемента в очередь.
- Индексы отсчитываются с головы очереди.
- Если искомого элемента нет, методы должны возвращать
-1.
- Реализовать метод
- Contains (36, 37)
- Добавить в интерфейс очереди и реализовать методы
contains(element)– проверяет, содержится ли элемент в очередиremoveFirstOccurrence(element)– удаляет первое вхождение элемента в очередь и возвращает было ли такое
- Дублирования кода быть не должно
- Добавить в интерфейс очереди и реализовать методы
- Nth (38, 39)
- Добавить в интерфейс очереди и реализовать методы
getNth(n)– создать очередь, содержащую каждый n-й элемент, считая с 1removeNth(n)– создать очередь, содержащую каждый n-й элемент, и удалить их из исходной очередиdropNth(n)– удалить каждый n-й элемент из исходной очереди
- Тип возвращаемой очереди должен соответствовать типу исходной очереди
- Дублирования кода быть не должно
- Добавить в интерфейс очереди и реализовать методы
Модификации
- Базовая
- Классы должны находиться в пакете
queue
- Классы должны находиться в пакете
- ToStr (32, 34)
- Реализовать метод
toStr, возвращающий строковое представление очереди в виде '[' голова ',' ... ',' хвост ']'
- Реализовать метод
- ToArray (33, 35)
- Реализовать метод
toArray, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту.
- Реализовать метод
- Deque
- Дополнительно реализовать методы
push– добавить элемент в начало очереди;peek– вернуть последний элемент в очереди;remove– вернуть и удалить последний элемент из очереди.
- Дополнительно реализовать методы
- DequeToArray (36, 37)
- Реализовать модификацию Deque;
- Реализовать метод
toArray, возвращающий массив, содержащий элементы, лежащие в очереди в порядке от головы к хвосту.
- DequeIndexed (38, 39)
- Реализовать модификацию Deque
- Реализовать методы
get– получить элемент по индексу, отсчитываемому с головы;set– заменить элемент по индексу, отсчитываемому с головы.
- Для работы тестов необходимо добавить опцию JVM
--add-opens java.base/java.util=ALL-UNNAMED
Модификации
- Базовая
- Класс
BinarySearchдолжен находиться в пакетеsearch
- Класс
- Oddity (32 - 37)
- Если сумма всех чисел во входе чётная, то должна быть использоваться рекурсивная версия, иначе — итеративная.
- Shift (32, 34)
- На вход подается отсортированный (строго) по убыванию массив,
циклически сдвинутый на
kэлементов. Требуется найтиk. Все числа в массиве различны. - Класс должен иметь имя
BinarySearchShift
- На вход подается отсортированный (строго) по убыванию массив,
циклически сдвинутый на
- Max (33, 35)
- На вход подается циклический сдвиг отсортированного (строго) по возрастанию массива. Требуется найти в нём максимальное значение.
- Класс должен иметь имя
BinarySearchMax
- Uni (36, 37)
- На вход подается массив полученный приписыванием в конец массива отсортированного (строго) по возрастанию, массива отсортированного (строго) по убыванию. Требуется найти минимальную возможную длину первого массива.
- Класс должен иметь имя
BinarySearchUni
- Span (38, 39)
- На вход подаётся число
xи массив, отсортированный по неубыванию. Требуется вывести два числа: начало и длину диапазона элементов, равныхx. Если таких элементов нет, то следует вывести пустой диапазон, у которого левая граница совпадает с местом вставки элементаx. - Не допускается использование типов
longиBigInteger. - Класс должен иметь имя
BinarySearchSpan
- На вход подаётся число
Модификации
- Base
- Класс
ExpressionParserдолжен реализовывать интерфейс TripleParser - Классы
CheckedAdd,CheckedSubtract,CheckedMultiply,CheckedDivideиCheckedNegateдолжны реализовывать интерфейс TripleExpression - Нельзя использовать типы
longиdouble - Нельзя использовать методы классов
MathиStrictMath
- Класс
- SetClear (32-37)
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
set– установка бита,2 set 3равно 10;clear– сброс бита,10 clear 3равно 2.
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
- Count (32-37)
- Дополнительно реализуйте унарную операцию
count– число установленных битов,count -5равно 31.
- Дополнительно реализуйте унарную операцию
- GcdLcm (38, 39)
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
gcd– НОД,2 gcd -3равно 1;lcm– НОК,2 lcm -3равно -6.
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
- Reverse (38, 39)
- Дополнительно реализуйте унарную операцию
reverse– число с переставленными цифрами,reverse -12345равно-54321.
- Дополнительно реализуйте унарную операцию
- PowLog10 (36-39)
- Дополнительно реализуйте унарные операции:
log10– логарифм по уснованию 10,log10 1000равно 3;pow10– 10 в степени,pow10 4равно 10000.
- Дополнительно реализуйте унарные операции: