Модификации
- Base
- Класс
ExpressionParser
должен реализовывать интерфейс Parser - Классы
CheckedAdd
,CheckedSubtract
,CheckedMultiply
,CheckedDivide
иCheckedNegate
должны реализовывать интерфейс TripleExpression - Нельзя использовать типы
long
иdouble
- Нельзя использовать методы классов
Math
иStrictMath
- Исходный код тестов
- Первый аргумент:
easy
илиhard
- Последующие аргументы: модификации
- Первый аргумент:
- Класс
Модификации
- Base
- Класс
expression.parser.ExpressionParser
должен реализовывать интерфейс Parser - Результат разбора должен реализовывать интерфейс TripleExpression
- Исходный код тестов
- Первый аргумент:
easy
илиhard
- Последующие аргументы: модификации
- Первый аргумент:
- Класс
- Shifts (38, 39)
- Дополнительно реализуйте бинарные операции с минимальным приоритетом:
<<
– сдвиг влево (1 << 5 + 3
равно1 << (5 + 3)
равно 256);>>
– сдвиг вправо (1024 >> 5 + 3
равно1024 >> (5 + 3)
равно 4);>>>
– арифметический сдвиг вправо (-1024 >>> 5 + 3
равно1024 >>> (5 + 3)
равно -4);
- Дополнительно реализуйте бинарные операции с минимальным приоритетом:
- MinMax (34-37)
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
min
– минимум,2 min 3
равно 2;max
– максимум,2 max 3
равно 3.
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
- Zeroes (31-33, 36-39)
- Дополнительно реализуйте унарные операции
l0
– число старших нулевых бит,l0 123456
равно 15;t0
– число младших нулевых бит,t0 123456
равно 6.
- Дополнительно реализуйте унарные операции
Модификации
- Base
- Реализуйте интерфейс Expression
- Исходный код тестов
- Первый аргумент:
easy
илиhard
- Последующие аргументы: модификации
- Первый аргумент:
- Triple (31-39)
- Дополнительно реализуйте поддержку выражений с тремя переменными:
x
,y
иz
. - Интерфейс TripleExpression.
- Дополнительно реализуйте поддержку выражений с тремя переменными:
- BigInteger (36-37)
- Дополнительно реализуйте вычисления в типе
BigInteger
. - Интерфейс BigIntegerExpression.
- Дополнительно реализуйте вычисления в типе
- BigDecimal (38-39)
- Дополнительно реализуйте вычисления в типе
BigDecimal
. - Интерфейс BigDecimalExpression.
- Дополнительно реализуйте вычисления в типе
Тесты не предусмотрены. Решение должно находиться в пакете game
.
Модификации
- Переговоры (38-39)
- У игрока должна быть возможность сдаться, если он не хочет продолжать игру.
- Игрок может вместо своего хода предложить ничью. Если второй игрок принимает предложение, то игра заканчивается. В противном случае, игра продолжается и игрок делает ход. Повторное предложение ничьей на том же ходу считается ошибкой.
- Турнир (36-37)
- Добавьте поддержку кругового турнира для нескольких участников.
- В рамках кругового турнира каждый с каждым должен сыграть две партии, по одной каждым цветом.
- Выведите таблицу очков по схеме:
- 3 очка за победу;
- 1 очко за ничью;
- 0 очков за поражение.
- Гекс (36-39)
- Добавьте поддержку ромбической доски для игры Гекс (с тремя направлениями линий).
- В качестве примера, сделайте доску размером 11×11.
- Multiplayer (34-35)
- Добавьте поддержку значков
-
и|
; - Добавьте возможность игры для 3 и 4 игроков.
- Добавьте поддержку значков
- Матчи (31-33)
- Добавьте поддержку матчей: последовательность игр до указанного числа побед.
- Стороны в матче должны меняться каждую игру.
Модификации
- Базовая
- Исходный код тестов
- Откомпилированные тесты
- Аргументы командной строки: модификации
- InsDel (38, 39)
- Добавьте поддержку
<<вставок>>
:<ins>вставок</ins>
и}}удалений{{
:<del>удалений</del>
- Добавьте поддержку
- Pre (36, 37)
- Добавьте поддержку
```
кода __без__ форматирования
```:<pre>кода __без__ форматирования</pre>
- Добавьте поддержку
```
- Quote (34, 35)
- Добавьте поддержку
''цитат''
:<q>цитат</q>
- Добавьте поддержку
- Var (31-33)
- Добавьте поддержку
%переменных%
:<var>переменных</var>
- Добавьте поддержку
Модификации
- Base
- Исходный код тестов:
- MarkupTester.java
- MarkupTest.java
- Аргументы командной строки: модификации
- Исходный код тестов:
- Html (34, 35)
- Дополнительно реализуйте метод
toHtml
, генерирующий HTML-разметку:- выделеный текст окружается тегом
em
; - сильно выделеный текст окружается тегом
strong
; - зачеркнутый текст окружается тегом
s
.
- выделеный текст окружается тегом
- Дополнительно реализуйте метод
- HtmlList (38, 39)
- Сделайте модификацию Html
- Добавьте поддержку:
- Нумерованных списков (класс
OrderedList
, тегol
): последовательность элементов - Ненумерованных списков (класс
UnorderedList
, тегul
): последовательность элементов - Элементов списка (класс
ListItem
, тегli
): последовательность абзацев и списков
- Нумерованных списков (класс
- Для новых классов поддержка Markdown не требуется
- Исходный код тестов
- BBCode (31-33)
- Дополнительно реализуйте метод
toBBCode
, генерирующий BBCode-разметку:- выделеный текст окружается тегом
i
; - сильно выделеный текст окружается тегом
b
; - зачеркнутый текст окружается тегом
s
.
- выделеный текст окружается тегом
- Дополнительно реализуйте метод
- BBCodeList (36, 37)
- Сделайте модификацию BBCode
- Добавьте поддержку:
- Нумерованных списков (класс
OrderedList
, тегlist=1
): последовательность элементов - Ненумерованных списков (класс
UnorderedList
, тегlist
): последовательность элементов - Элементов списка (класс
ListItem
, открывающий тег*
): последовательность абзацев и списков
- Нумерованных списков (класс
- Для новых классов поддержка Markdown не требуется
- Исходный код тестов
Модификации
- Base
- Класс должен иметь имя
Wspp
- Исходный код тестов: WsppTest.java, WsppTester.java
- Откомпилированные тесты: WsppTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- SortedSecondG (38-39)
- В выходном файле слова должны быть упорядочены в лексикографическом порядке
- Вместо номеров вхождений во всем файле надо указывать только четныe вхождения в каждой строке.
- Класс должен иметь имя
WsppSortedSecondG
- SecondG (36-37)
- Вместо номеров вхождений во всем файле надо указывать только четныe вхождения в каждой строке.
- Класс должен иметь имя
WsppSecondG
- SortedPosition (34-35)
- В выходном файле слова должны быть упорядочены в лексикографическом порядке
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер в строке>
- Класс должен иметь имя
WsppSortedPosition
- Position (31-33)
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер в строке>
- Класс должен иметь имя
WsppPosition
- Вместо номеров вхождений во всем файле надо указывать
Модификации
- Base
- Исходный код тестов: FastReverseTest.java
- Откомпилированные тесты: FastReverseTest.jar
- Аргументы командной строки: модификации
- HexAbc2 (38-39)
- На вход подаются десятичные и шестнадцатеричные числа
- Шестнадцатеричные числа имеют префикс
0x
- Десятеричные числа могут быть записаны буквами
нулю соответствует буква
a
, единице –b
и так далее - Выведите все числа, используя буквенный формат
- Класс должен иметь имя
ReverseHexAbc2
- Linear (38-39)
- Пусть n – сумма числа чисел и строк во входе, тогда программе разрешается потратить не более 5 n +O(1) памяти
- HexDec2 (36-37)
- На вход подаются десятичные и шестнадцатеричные числа
- Шестнадцатеричные числа имеют префикс
0x
- Выведите все числа, используя формат шестнадцатеричных чисел
- Класс должен иметь имя
ReverseHexDec2
- Hex2 (34-35)
- Во вводе используются числа в шестнадцатеричной системе счисления
- Класс должен иметь имя
ReverseHex2
- Abc2 (31-33)
- Во вводе и выводе используются числа, записаные буквами:
нулю соответствует буква
a
, единице –b
и так далее - Класс должен иметь имя
ReverseAbc2
- Во вводе и выводе используются числа, записаные буквами:
нулю соответствует буква
Модификации
- Base
- Класс должен иметь имя
WordStatInput
- Исходный код тестов: WordStatTest.java, WordStatTester.java, WordStatChecker.java
- Откомпилированные тесты: WordStatTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- Count (34, 35, 38, 39)
- В выходном файле слова должны быть упорядочены по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле.
- Класс должен иметь имя
WordStatCount
- Words (31, 32, 33, 36, 37)
- В выходном файле слова должны быть упорядочены в лексикографическом порядке
- Класс должен иметь имя
WordStatWords
- Sort (36-39)
- Пусть n – число слов во входном файле, тогда программа должна работать за O(n log n).
Модификации
- Base
- Исходный код тестов: ReverseTest.java, ReverseTester.java
- Откомпилированные тесты: ReverseTest.jar
- Аргументы командной строки: модификации
- Sum2 (38, 39)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чисел в прямоугольнике верхний левый угол матрицы — текущее число
- Класс должен иметь имя
ReverseSum2
- Min2 (36, 37)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел верхний левый угол матрицы — текущее число
- Класс должен иметь имя
ReverseMin2
- Linear (36-39)
- Пусть n – сумма числа чисел и строк во входе, тогда программе разрешается потратить не более 6_n_+O(1) памяти
- Transpose (34-35)
- Рассмотрим входные данные как (не полностью определенную) матрицу, выведите ее в транспонированном виде
- Класс должен иметь имя
ReverseTranspose
- Odd2 (31-33)
- Выведите (в реверсивном порядке) только числа, у которых сумма номеров строки и столбца нечетная
- Класс должен иметь имя
ReverseOdd2
Модификации
- BigIntegerHex (38-39)
- Входные данные помещаются в тип BigInteger
- Шестнадцатеричные числа имеют префикс
0x
- Класс должен иметь имя
SumBigIntegerHex
- LongHex (36-37)
- Входные данные являются 64-битными целыми числами
- Шестнадцатеричные числа имеют префикс
0x
- Класс должен иметь имя
SumLongHex
- Float (34-35)
- Входные данные являются 32-битными числами с формате с плавающей точкой
- Класс должен иметь имя
SumFloat
- Числа разделяются пробелами-разделителями
- Long (31-33)
- Входные данные являются 64-битными целыми числами
- Класс должен иметь имя
SumLong
Для того, чтобы протестировать исходную программу:
- Скачайте откомпилированные тесты (SumTest.jar)
- Откомпилируйте
Sum.java
- Проверьте, что создался
Sum.class
- В каталоге, в котором находится
Sum.class
выполните командуjava -jar <путь к SumTest.jar> Base
- Например, если
SumTest.jar
находится в текущем каталоге, выполните команду
java -jar SumTest.jar Base
- Например, если
Исходный код тестов:
Модификации
- RunMe
- Скачайте исходный код (RunMe.java)
- Создайте скрипт, компилирующий и запускающий
RunMe
из командной строки с выданными вам аргументами командной строки - Следуйте выведенной инструкции
Рекомендации по выполнению модификации
- Проверьте версию Java:
1. Запустите
javac --version
и проверьте, что версия находится в диапазоне 11..17. 1. Запуститеjava --version
и проверьте, что версия такая же как и уjavac
. - Скачайте RunMe.java
- Откомпилируйте
RunMe.java
: 1. Запуститеjavac RunMe.java
1. Убедитесь, что компиляция завершилась бе ошибок 1. Проверьте, что появилсяRunMe.class
- Запустите
RunMe
: 1. Запуститеjava RunMe [шесть] [слов] [пароля] [пришедшего] [на] [email]
1. При правильном исполнении вы должны получить ссылку Если получено сообщение об ошибке — исправьте её и запустите повторно 1. Зайдите по полученной ссылке и убедитесь, что она правильная - Напишите и протестируйте скрипт: 1. Напишите скрипт, включающий команды компиляции и запуска. Если вы не умеете писать скрипты, во воспользуйтесь одной из инструкций: Windows, Linux, macOS 1. Запустите и проверьте, что вы получили ту же ссылку, что и в предыдущем пункте 1. Сдайте скрипт преподавателю
- Вы можете получить больше плюсиков, модифицируя код
RunMe.java