Модификации
- Base
- Класс
ExpressionParser
должен реализовывать интерфейс TripleParser
- Класс
- Zeroes (32, 33)
- Дополнительно реализуйте унарные операции
l0
– число старших нулевых бит,l0 123456
равно 15;t0
– число младших нулевых бит,t0 123456
равно 6.
- Дополнительно реализуйте унарные операции
- PowLog2 (34, 35)
- Дополнительно реализуйте унарные операции:
log2
– логарифм по уснованию 2,log2 10
равно 3;pow2
– два в степени,pow2 4
равно 16.
- Дополнительно реализуйте унарные операции:
- MinMax (36-39)
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
min
– минимум,2 min 3
равно 2;max
– максимум,2 max 3
равно 3.
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
- Shifts (38, 39)
- Дополнительно реализуйте бинарные операции с минимальным приоритетом:
<<
– сдвиг влево (1 << 5 + 3
равно1 << (5 + 3)
равно 256);>>
– сдвиг вправо (1024 >> 5 + 3
равно1024 >> (5 + 3)
равно 4);>>>
– арифметический сдвиг вправо (-1024 >>> 5 + 3
равно1024 >>> (5 + 3)
равно -4);
- Дополнительно реализуйте бинарные операции с минимальным приоритетом:
Модификации
- Base
- Класс
ExpressionParser
должен реализовывать интерфейс TripleParser - Результат разбора должен реализовывать интерфейс TripleExpression
- Исходный код тестов
- Первый аргумент:
easy
илиhard
- Последующие аргументы: модификации
- Первый аргумент:
- Класс
- Bitwise (34-39)
- Дополнительно реализуйте бинарные операции:
&
– побитное И, приоритет меньше чем у+
(6 & 1 + 2
равно6 & (1 + 2)
равно 2);^
– побитный XOR, приоритет меньше чем у&
(6 ^ 1 + 2
равно6 ^ (1 + 2)
равно 5);|
– побитное ИЛИ, приоритет меньше чем у^
(6 | 1 + 2
равно6 | (1 + 2)
равно 7);
- Дополнительно реализуйте бинарные операции:
- Ones (36-39)
- Дополнительно реализуйте унарные операции
l1
– число старших единичных бит,l1 -12345
равно 18;t1
– число младших единичных бит,t1 12345
равно 3.
- Дополнительно реализуйте унарные операции
- LowHigh (38, 39)
- Дополнительно реализуйте унарные операции:
low
– младший установленный бит,low 123456
равно 64;high
– старший установленный бит,high 123456
равно 65536.
- Дополнительно реализуйте унарные операции:
- Not (33, 35)
- Дополнительно реализуйте унарную операцию
~
– побитное отрицание,~-5
равно 4.
- Дополнительно реализуйте унарную операцию
Модификации
- Base
- Реализуйте интерфейс Expression
- Исходный код тестов
- Первый аргумент:
easy
илиhard
. - Последующие аргументы: модификации.
- Первый аргумент:
- Triple (32-39)
- Дополнительно реализуйте поддержку выражений с тремя переменными:
x
,y
иz
. - Интерфейс/тесты TripleExpression.
- Дополнительно реализуйте поддержку выражений с тремя переменными:
- BigInteger (36, 37)
- Дополнительно реализуйте вычисления в типе
BigInteger
. - Интерфейс/тесты BigIntegerExpression.
- Дополнительно реализуйте вычисления в типе
- BigDecimal (38, 39)
- Дополнительно реализуйте вычисления в типе
BigDecimal
. - Интерфейс/тесты BigDecimalExpression.
- Дополнительно реализуйте вычисления в типе
Тесты не предусмотрены. Решение должно находиться в пакете game
.
Модификации
- Круг (36-39)
- Добавьте поддержку доски в форме круга.
- В качестве примера, сделайте доску диаметром 10.
- Дополнительные ходы (34 - 37)
- Если в результате хода игрока на доске появляется новая последовательность из 4+ одинаковых символов, то он делает дополнительный ход.
- Игрок может сделать несколько дополнительных ходов подряд.
- Техническая ничья (38, 39)
- Если при текущем состоянии доски ни один из игроков не может выиграть,
даже если сделает
k
ходов подряд, то должна объявляться ничья.
- Если при текущем состоянии доски ни один из игроков не может выиграть,
даже если сделает
- Олимпийская система (32 - 39)
- Добавьте поддержку турниров по олимпийской системе.
- Стороны в матче выбираются случайно.
- При ничьей игроки играют до результативной партии.
- Выбывшие на одном круге делят одно место.
Модификации
- Базовая
- Исходный код тестов
- Откомпилированные тесты
- Аргументы командной строки: модификации
- Quote (32, 33)
- Добавьте поддержку
''цитат''
:<q>цитат</q>
- Добавьте поддержку
- Var (34, 35)
- Добавьте поддержку
%переменных%
:<var>переменных</var>
- Добавьте поддержку
- Pre (36, 37)
- Добавьте поддержку
```
кода __без__ форматирования
```:<pre>кода __без__ форматирования</pre>
- Добавьте поддержку
```
- InsDel (38, 39)
- Добавьте поддержку
<<вставок>>
:<ins>вставок</ins>
и}}удалений{{
:<del>удалений</del>
- Добавьте поддержку
Модификации
- Base
- Исходный код тестов:
- MarkupTester.java
- MarkupTest.java
- Аргументы командной строки: модификации
- Откомпилированных тестов не существуют, так как они зависят от вашего кода
- Исходный код тестов:
- BBCode (32-35)
- Дополнительно реализуйте метод
toBBCode
, генерирующий BBCode-разметку:- выделеный текст окружается тегом
[i]
; - сильно выделеный текст окружается тегом
[b]
; - зачеркнутый текст окружается тегом
[s]
.
- выделеный текст окружается тегом
- Дополнительно реализуйте метод
- BBCodeList (36-39)
- Сделайте модификацию BBCode
- Добавьте поддержку:
- Нумерованных списков (класс
OrderedList
, тег[list=1]
): последовательность элементов - Ненумерованных списков (класс
UnorderedList
, тег[list]
): последовательность элементов - Элементов списка (класс
ListItem
, открывающий тег[*]
): последовательность абзацев и списков
- Нумерованных списков (класс
- Для новых классов поддержка Markdown не требуется
- Исходный код тестов
Модификации
- Base
- Класс должен иметь имя
Wspp
- Исходный код тестов: WsppTest.java, WsppTester.java
- Откомпилированные тесты: WsppTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- Position (32, 33)
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер в строке>
, где номер в строке считается с конца - Класс должен иметь имя
WsppPosition
- Вместо номеров вхождений во всем файле надо указывать
- SortedPosition (34, 35)
- В выходном файле слова должны быть упорядочены в лексикографическом порядке
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер в строке>
, где номер в строке считается с конца - Класс должен иметь имя
WsppSortedPosition
- SortedFirst (36, 37)
- В выходном файле слова должны быть упорядочены в лексикографическом порядке
- Вместо номеров вхождений во всем файле надо указывать только первое вхождение в каждой строке
- Класс должен иметь имя
WsppSortedFirst
- SortedRFirst (38, 39)
- В выходном файле слова должны быть упорядочены в лексикографическом порядке перевёрнутых слов
- Вместо номеров вхождений во всем файле надо указывать только первое вхождение в каждой строке
- Класс должен иметь имя
WsppSortedRFirst
Модификации
- Base
- Исходный код тестов: FastReverseTest.java
- Откомпилированные тесты: FastReverseTest.jar
- Аргументы командной строки: модификации
- MinRAbc (32, 33)
- Вместо каждого числа выведите минимум из чисел, предшествующих ему в строки и его самого
- Во вводе и выводе десятичные числа пишутся буквами:
нулю соответствует буква
a
, единице –b
и так далее - Класс должен иметь имя
ReverseMinRAbc
- MinСAbc (34, 35)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел, находящихся в его столбце в предыдущих строках, и его самого
- Во вводе и выводе десятичные числа пишутся буквами:
нулю соответствует буква
a
, единице –b
и так далее - Класс должен иметь имя
ReverseMinCAbc
- SumHexAbc (36, 37)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чисел в прямоугольнике верхний левый угол матрицы — текущее число
- На вход подаются десятичные и шестнадцатеричные числа
- Шестнадцатеричные числа имеют префикс
0x
- Десятичные числа записаны буквами:
нулю соответствует буква
a
, единице –b
и так далее - В выходе должны быть десятичные числа, записаные буквами
- Класс должен иметь имя
ReverseSumHexAbc
- SumHexDecAbc (38, 39)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чисел в прямоугольнике верхний левый угол матрицы — текущее число
- На вход подаются десятичные и шестнадцатеричные числа
- Шестнадцатеричные числа имеют префикс
0x
- Десятичные числа могут быть записаны буквами:
нулю соответствует буква
a
, единице –b
и так далее - В выходе должны быть десятичные числа, записаные буквами
- Класс должен иметь имя
ReverseSumHexDecAbc
Модификации
- Base
- Класс должен иметь имя
WordStatInput
- Исходный код тестов: WordStatTest.java, WordStatTester.java, WordStatChecker.java
- Откомпилированные тесты: WordStatTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- CountPrefixL (32, 33)
- Выходной файл должен содержать все различные префиксы длины 3 слов, встречающихся во входном файле, упорядоченые по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле. Слова длины меньшей 3 игнорируются.
- Класс должен иметь имя
WordStatCountPrefixL
- Count (34, 35)
- В выходном файле слова должны быть упорядочены по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле.
- Класс должен иметь имя
WordStatCount
- CountMiddleL (36, 37)
- Назовём серединой слова подстроку, полученую удалением первых и последних 2 символов слова. Слова длины меньшей 5 игнорируются.
- Выходной файл должен содержать все различные середины слов слов, встречающихся во входном файле, упорядоченые по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле.
- Класс должен иметь имя
WordStatCountMiddleL
- CountAffixL (38, 39)
- Назовём аффиксом слова его префикс и суффикс длины 2. Слова длины меньшей 2 игнорируются.
- Выходной файл должен содержать все различные аффиксы слов, встречающихся во входном файле, упорядоченые по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле.
- Класс должен иметь имя
WordStatCountAffixL
- FastSort (36 - 39)
- Пусть n – число слов во входном файле, тогда программа должна работать за O(n log n).
Модификации
- Base
- Исходный код тестов: ReverseTest.java, ReverseTester.java
- Откомпилированные тесты: ReverseTest.jar
- Аргументы командной строки: модификации
- MinR (32, 33)
- Вместо каждого числа выведите минимум из чисел, предшествующих ему в строки и его самого
- Класс должен иметь имя
ReverseMinR
- MinС (34, 35)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел, находящихся в его столбце в предыдущих строках, и его самого
- Класс должен иметь имя
ReverseMinC
- SumHex (36, 37)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чисел в прямоугольнике верхний левый угол матрицы — текущее число.
- Во вводе и выводе используются числа в шестнадцатеричной системе счисления.
- Класс должен иметь имя
ReverseSumHex
.
- SumHexDec (38, 39)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чисел в прямоугольнике верхний левый угол матрицы — текущее число.
- На вход подаются десятичные и шестнадцатеричные числа.
- Шестнадцатеричные числа имеют префикс
0x
. - Класс должен иметь имя
ReverseSumHexDec
.
- Memory (36-39)
- Пусть M – объём памяти, необходимый для сохранения ввода
в двумерном массиве
int
минимального размера. Ваша программа должна использовать не более 4_M_ + 1024 байт памяти. - Накладные расходы на запуск вашей программы JVM не учитываются.
- Пусть M – объём памяти, необходимый для сохранения ввода
в двумерном массиве
Модификации
- Double (32, 33)
- Входные данные являются 64-битными числами с формате с плавающей точкой
- Класс должен иметь имя
SumDouble
- DoubleSpace (34, 35)
- Входные данные являются 64-битными числами с формате с плавающей точкой
- Класс должен иметь имя
SumDoubleSpace
- Числа разделяются пробелами-разделителями
- LongSpace (36, 37)
- Входные данные являются 64-битными целыми числами
- Класс должен иметь имя
SumLongSpace
- Числа разделяются пробелами-разделителями
- BigIntegerSpace (38, 39)
- Входные данные помещаются в тип BigInteger
- Класс должен иметь имя
SumBigIntegerSpace
- Числа разделяются пробелами-разделителями
Для того, чтобы протестировать программу:
- Скачайте откомпилированные тесты (SumTest.jar)
- Откомпилируйте
Sum.java
- Проверьте, что создался
Sum.class
- В каталоге, в котором находится
Sum.class
, выполните командуjava -ea -jar <путь к SumTest.jar> Base
- Например, если
SumTest.jar
находится в текущем каталоге, выполните команду
java -ea -jar SumTest.jar Base
- Например, если
- Для ускорени отладки рекомендуется сделать скрипт, выполняющий шаги 2−4.
Исходный код тестов:
Модификации
- RunMe
- Скачайте исходный код (RunMe.java)
- Создайте скрипт, компилирующий и запускающий
RunMe
из командной строки с выданными вам аргументами командной строки - Следуйте выведенной инструкции
Рекомендации по выполнению модификации
- Проверьте версию Java:
- Запустите
javac --version
и проверьте, что версия находится в диапазоне 17..20 (в крайнем случае, 11..21). - Запустите
java --version
и проверьте, что версия, такая же как и уjavac
.
- Запустите
- Скачайте RunMe.java
- Откомпилируйте
RunMe.java
:- Запустите
javac RunMe.java
- Убедитесь, что компиляция завершилась без ошибок
- Проверьте, что появился
RunMe.class
- Запустите
- Запустите
RunMe
:- Запустите
java RunMe [шесть] [слов] [пароля] [пришедшего] [на] [email]
- При правильном исполнении вы должны получить ссылку. Если получено сообщение об ошибке — исправьте её и запустите повторно
- Зайдите по полученной ссылке и убедитесь, что она правильная
- Запустите
- Напишите и протестируйте скрипт:
- Вы можете получить больше плюсиков, модифицируя код
RunMe.java