ITMO CT 2022-y1-fall
Course by kgeorgiy
Модификации
- Base
- Класс
ExpressionParserдолжен реализовывать интерфейс TripleParser - Классы
CheckedAdd,CheckedSubtract,CheckedMultiply,CheckedDivideиCheckedNegateдолжны реализовывать интерфейс TripleExpression - Нельзя использовать типы
longиdouble - Нельзя использовать методы классов
MathиStrictMath - Исходный код тестов
- Первый аргумент:
easyилиhard - Последующие аргументы: модификации
- Первый аргумент:
- Класс
- SetClear (34-37)
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
set– установка бита,2 set 3равно 10;clear– сброс бита,10 clear 3равно 2.
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
- Count (32, 33, 36, 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.
- Дополнительно реализуйте унарные операции:
Модификации
- Base
- Класс
ExpressionParserдолжен реализовывать интерфейс TripleParser - Результат разбора должен реализовывать интерфейс TripleExpression
- Исходный код тестов
- Первый аргумент:
easyилиhard - Последующие аргументы: модификации
- Первый аргумент:
- Класс
- SetClear (34 - 37)
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
set– установка бита,2 set 3равно 10;clear– сброс бита,10 clear 3равно 2.
- Дополнительно реализуйте бинарные операции (минимальный приоритет):
- Count (32, 33, 36, 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.
- Дополнительно реализуйте унарную операцию
Модификации
- Base
- Реализуйте интерфейс Expression
- Исходный код тестов
- Исходный код тестов для групп 32-35
- Первый аргумент:
easyилиhard. - Последующие аргументы: модификации.
- Первый аргумент:
- Triple (32-39)
- Дополнительно реализуйте поддержку выражений с тремя переменными:
x,yиz. - Интерфейс TripleExpression.
- Дополнительно реализуйте поддержку выражений с тремя переменными:
- Double (36-39)
- Дополнительно реализуйте вычисления в типе
double. - Интерфейс DoubleExpression.
- Дополнительно реализуйте вычисления в типе
Тесты не предусмотрены. Решение должно находиться в пакете game.
Модификации
- Матчи (32 - 35)
- Добавьте поддержку матчей: последовательность игр до указанного числа побед.
- Стороны в матче должны меняться каждую игру.
- Дополнительные ходы (34, 35)
- Если в результате хода игрока на доске появляется новая последовательность из 4+ одинаковых символов, то он делает дополнительный ход.
- Игрок может сделать несколько дополнительных ходов подряд.
- Турнир (36 - 39)
- Добавьте поддержку кругового турнира для нескольких участников.
- В рамках кругового турнира каждый с каждым должен сыграть две партии, по одной каждым цветом.
- Выведите таблицу очков по схеме:
- 3 очка за победу;
- 1 очко за ничью;
- 0 очков за поражение.
- Препятствия (36 - 39)
- Добавьте поддержку препятствий — клеток, в которые запрещено делать ходы.
- В качестве примера, сделайте доску размером 11×11, у которой клетки на диагоналях запрещены.
- Multiplayer (38, 39)
- Добавьте поддержку значков
-и|; - Добавьте возможность игры для 3 и 4 игроков.
- Добавьте поддержку значков
Модификации
- Базовая
- Исходный код тестов
- Откомпилированные тесты
- Аргументы командной строки: модификации
- Link (38, 39)
- Добавьте поддержку
[ссылок с _выделением_](https://kgeorgiy.info):<a href='https://kgeorgiy.info'>ссылок с <em>выделением</em></a>
- Добавьте поддержку
- Image (36, 37)
- Добавьте поддержку
:<img alt='картинок' src='https://www.ifmo.ru/images/menu/small/p10.jpg'>
- Добавьте поддержку
- Underline (34, 35)
- Добавьте поддержку
++подчеркивания++:<u>подчеркивания</u>
- Добавьте поддержку
- Mark (32, 33)
- Добавьте поддержку
~выделения цветом~:<mark>выделения цветом</mark>
- Добавьте поддержку
Модификации
- Base
- Исходный код тестов:
- MarkupTester.java
- MarkupTest.java
- Аргументы командной строки: модификации
- Откомпилированных тестов не существуют, так как они зависят от вашего кода
- Исходный код тестов:
- HtmlList (36, 37)
- Дополнительно реализуйте метод
toHtml, генерирующий HTML-разметку:- выделеный текст окружается тегом
em; - сильно выделеный текст окружается тегом
strong; - зачеркнутый текст окружается тегом
s.
- выделеный текст окружается тегом
- Добавьте поддержку:
- Нумерованных списков (класс
OrderedList, тегol): последовательность элементов - Ненумерованных списков (класс
UnorderedList, тегul): последовательность элементов - Элементов списка (класс
ListItem, тегli): последовательность абзацев и списков
- Нумерованных списков (класс
- Для новых классов поддержка Markdown не требуется
- Исходный код тестов
- Дополнительно реализуйте метод
- TexList (38, 39)
- Дополнительно реализуйте метод
toTex, генерирующий TeX-разметку:- выделеный текст заключается в
\emph{и}; - сильно выделеный текст заключается в
\textbf{и}; - зачеркнутый текст заключается в
\textst{и}.
- выделеный текст заключается в
- Добавьте поддержку:
- Нумерованных списков (класс
OrderedList, окружениеenumerate): последовательность элементов - Ненумерованных списков (класс
UnorderedList, окружениеitemize): последовательность элементов - Элементов списка (класс
ListItem, тег\item: последовательность абзацев и списков
- Нумерованных списков (класс
- Для новых классов поддержка Markdown не требуется
- Исходный код тестов
- Дополнительно реализуйте метод
- Tex (34, 35)
- Дополнительно реализуйте метод
toTex, генерирующий TeX-разметку:- выделеный текст заключается в
\emph{и}; - сильно выделеный текст заключается в
\textbf{и}; - зачеркнутый текст заключается в
\textst{и}.
- выделеный текст заключается в
- Дополнительно реализуйте метод
- Html (32, 33)
- Дополнительно реализуйте метод
toHtml, генерирующий HTML-разметку:- выделеный текст окружается тегом
em; - сильно выделеный текст окружается тегом
strong; - зачеркнутый текст окружается тегом
s.
- выделеный текст окружается тегом
- Дополнительно реализуйте метод
Модификации
- Base
- Класс должен иметь имя
Wspp - Исходный код тестов: WsppTest.java, WsppTester.java
- Откомпилированные тесты: WsppTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- LastL (36, 37)
- Вместо номеров вхождений во всем файле надо указывать только последнее вхождение в каждой строке.
- Класс должен иметь имя
WsppLastL
- CountLastL (38, 39)
- В выходном файле слова должны быть упорядочены по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле.
- Вместо номеров вхождений во всем файле надо указывать только последнее вхождение в каждой строке.
- Класс должен иметь имя
WsppCountLastL
- CountPosition (34, 35)
- В выходном файле слова должны быть упорядочены по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле.
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер в строке> - Класс должен иметь имя
WsppCountPosition
- Position (32, 33)
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер в строке> - Класс должен иметь имя
WsppPosition
- Вместо номеров вхождений во всем файле надо указывать
Модификации
- Base
- Исходный код тестов: FastReverseTest.java
- Откомпилированные тесты: FastReverseTest.jar
- Аргументы командной строки: модификации
- OctDec (36, 37)
- На вход подаются десятичные и восьмиричные числа
- Восьмиричные числа имеют суффикс
o - Класс должен иметь имя
ReverseOctDec
- OctAbc (38, 39)
- На вход подаются десятичные и восьмиричные числа
- Восьмиричные числа имеют суффикс
o - Десятичные числа могут быть записаны буквами:
нулю соответствует буква
a, единице –bи так далее - Класс должен иметь имя
ReverseOctAbc
- Oct (32, 33)
- Во вводе и выводе используются числа в восьмеричной системе счисления
- Класс должен иметь имя
ReverseOct
- Abc (34, 35)
- Во вводе и выводе используются числа, записаные буквами:
нулю соответствует буква
a, единице –bи так далее - Класс должен иметь имя
ReverseAbc
- Во вводе и выводе используются числа, записаные буквами:
нулю соответствует буква
Модификации
- Base
- Класс должен иметь имя
WordStatInput - Исходный код тестов: WordStatTest.java, WordStatTester.java, WordStatChecker.java
- Откомпилированные тесты: WordStatTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- WordsPrefix (36, 37)
- Выходной файл должен содержать все различные префиксы длины 3 слов, встречающихся во входном файле, в лексикографическом порядке. Слова длины меньшей 3 используются как есть.
- Класс должен иметь имя
WordStatWordsPrefix
- WordsShingles (38, 39)
- Выходной файл должен содержать все различные подстроки длины 3 слов, встречающихся во входном файле, в лексикографическом порядке. Слова длины меньшей 3 используются как есть.
- Класс должен иметь имя
WordStatWordsShingles
- Words (32, 33)
- В выходном файле слова должны быть упорядочены в лексикографическом порядке
- Класс должен иметь имя
WordStatWords
- WordsSuffix (34, 35)
- Выходной файл должен содержать все различные суффиксы длины 3 слов встречающихся во входном файле, в лексикографическом порядке. Слова длины меньшей 3 используются как есть.
- Класс должен иметь имя
WordStatWordsSuffix
Модификации
- Base
- Исходный код тестов: ReverseTest.java, ReverseTester.java
- Откомпилированные тесты: ReverseTest.jar
- Аргументы командной строки: модификация
- Sum (36, 37)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чисел в его столбце и строке
- Класс должен иметь имя
ReverseSum
- Avg (38, 39)
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите среднее из чисел в его столбце и строке
- Класс должен иметь имя
ReverseAvg
- Memory (36-39)
- Пусть M – объём памяти, необходимый для сохранения ввода
в двумерном массиве
intминимального размера. Ваша программа должна использовать не более 4_M_ + 1024 байт памяти. - Накладные расходы на запуск вашей программы JVM не учитываются.
- Пусть M – объём памяти, необходимый для сохранения ввода
в двумерном массиве
- Even (32, 33)
- Выведите (в реверсивном порядке) только четные числа
- Класс должен иметь имя
ReverseEven
- Transpose (34, 35)
- Рассмотрим входные данные как (не полностью определенную) матрицу, выведите ее в транспонированном виде
- Класс должен иметь имя
ReverseTranspose
Модификации
- Octal (36, 37)
- Восьмеричные числа имеют суффикс
o - Класс должен иметь имя
SumOctal
- Восьмеричные числа имеют суффикс
- LongOctal (38, 39)
- Входные данные являются 64-битными целыми числами
- восьмеричные числа имеют суффикс
o - Класс должен иметь имя
SumLongOctal
- Double (34, 35)
- Входные данные являются 64-битными числами с формате с плавающей точкой
- Класс должен иметь имя
SumDouble
- Float (32, 33)
- Входные данные являются 32-битными числами с формате с плавающей точкой
- Класс должен иметь имя
SumFloat
Для того, чтобы протестировать исходную программу:
- Скачайте откомпилированные тесты (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:
1. Запустите
javac --versionи проверьте, что версия находится в диапазоне 17..18 (в крайнем случае, 11..19). 1. Запуститеjava --versionи проверьте, что версия, такая же как и уjavac. - Скачайте RunMe.java 1. Убедитесь, что компиляция завершилась без ошибок
- Откомпилируйте
RunMe.java: 1. Запуститеjavac RunMe.java1. Проверьте, что появилсяRunMe.class - Запустите
RunMe: 1. Запуститеjava RunMe [шесть] [слов] [пароля] [пришедшего] [на] [email]1. При правильном исполнении вы должны получить ссылку. Если получено сообщение об ошибке — исправьте её и запустите повторно 1. Зайдите по полученной ссылке и убедитесь, что она правильная - Напишите и протестируйте скрипт: 1. Напишите скрипт, включающий команды компиляции и запуска. Если вы не умеете писать скрипты, воспользуйтесь одной из инструкций: Windows, Linux, macOS 1. Запустите и проверьте, что вы получили ту же ссылку, что и в предыдущем пункте 1. Сдайте скрипт преподавателю
- Вы можете получить больше плюсиков, модифицируя код
RunMe.java