826ab5a4d970ff2adca7e97768ebbeef3cf85e17
Table of Contents
- Тесты к курсу «Введение в программирование»
- Домашнее задание 14. Обработка ошибок
- Домашнее задание 13. Разбор выражений
- Домашнее задание 12. Выражения
- Домашнее задание 11. Игра m,n,k
- Домашнее задание 9. Markdown to HTML
- Домашнее задание 7. Разметка
- Домашнее задание 6. Подсчет слов++
- Домашнее задание 5. Свой сканнер Fast Reverse Tests
- Домашнее задание 4. Подсчет слов Word Stat
- Домашнее задание 3. Реверс Reverse Tests
- Домашнее задание 2. Сумма чисел Sum Tests
Тесты к курсу «Введение в программирование»
Домашнее задание 14. Обработка ошибок
Модификации
- Base
- Класс
ExpressionParserдолжен реализовывать интерфейс ListParser. - Результат разбора должен реализовывать интерфейс ListExpression.
- Нельзя использовать типы
longиdouble - Нельзя использовать методы классов
MathиStrictMath - Исходный код тестов
- Первый аргумент:
easyилиhard - Последующие аргументы: модификации
- Первый аргумент:
- Класс
- 3637 Дополнительно реализуйте бинарные операции (максимальный приоритет):
*
**– возведение в степень,2 ** 3равно 8; *//– логарифм,10 // 2равно 3. - 3839 Дополнительно реализуйте
- бинарные операции (максимальный приоритет):
**– возведение в степень,2 ** 3равно 8;//– логарифм,10 // 2равно 3.
- унарные операции:
log₂– логарифм по основанию 2,log₂ 10равно 3;pow₂– два в степени,pow₂ 4равно 16.
- бинарные операции (максимальный приоритет):
- 3435 Дополнительно реализуйте унарные операции:
*
log₂– логарифм по основанию 2,log₂ 10равно 3; *pow₂– два в степени,pow₂ 4равно 16. - 3233
- Дополнительно реализуйте унарные операции:
low– младший установленный бит,low 123456равно 64;high– старший установленный бит,high 123456равно 65536.
- Дополнительно реализуйте унарные операции:
Домашнее задание 13. Разбор выражений
Модификации
- Base
- Класс
ExpressionParserдолжен реализовывать интерфейс ListParser - Результат разбора должен реализовывать интерфейс ListExpression
- Исходный код тестов
- Первый аргумент:
easyилиhard - Последующие аргументы: модификации
- Первый аргумент:
- Класс
- 3637. Дополнительно реализуйте:
- бинарные операции (минимальный приоритет):
min– минимум,2 min 3равно 2;max– максимум,2 max 3равно 3.
- унарную операцию
reverse– число с переставленными цифрами,reverse -12345равно-54321.
- бинарные операции (минимальный приоритет):
- 3839. * Дополнительно реализуйте:
- бинарные операции (минимальный приоритет):
min– минимум,2 min 3равно 2;max– максимум,2 max 3равно 3;
- унарные операции
reverse– число с переставленными цифрами,reverse -12345равно-54321;digits– сумма цифр числа,digits -12345равно 15.
- бинарные операции (минимальный приоритет):
- 3435
- унарные операции
floor– округление вниз до числа кратного 1000,floor 1234равно 1000;ceiling– округление вверх до числа кратного 1000,ceiling 1234равно 2000.
- бинарные операции (минимальный приоритет):
set– установка бита,2 set 3равно 10;clear– сброс бита,10 clear 3равно 2.
- унарные операции
- 3233. Дополнительно реализуйте унарные операции
*
floor– округление вниз до числа кратного 1000,floor 1234равно 1000; *ceiling– округление вверх до числа кратного 1000,ceiling 1234равно 2000.
Домашнее задание 12. Выражения
Модификации
- Base
- Реализуйте интерфейс Expression
- Исходный код тестов
- Первый аргумент:
easyилиhard - Последующие аргументы: модификации
- Первый аргумент:
- Triple (32-39)
- Дополнительно реализуйте поддержку выражений с тремя переменными:
x,yиz.- Например, для
expr = new Subtract(new Add(new Variable("x"), new Variable("y")), new Const(1)):expr.evaluate(2, 3, 5)должно быть равно 4;expr.toString()должно быть равно((x + y) - 1).
- Например, для
- Интерфейс/тесты TripleExpression.
- Дополнительно реализуйте поддержку выражений с тремя переменными:
- BigIntegerList (36, 37). Дополнительно реализуйте поддержку вычисления
выражений в типе
BigIntegerс позиционными переменными.- Конструктор позиционной переменной получает индекс переменной.
- При выводе позиционная переменная должна иметь вид
$index. - Метод вычисления выражения должен называться
evaluateBi, ему передаётся список значений переменных. - Например, для
expr = new Subtract(new Add(new Variable(0), new Variable(1)), new Const(BigInteger.ONE)):expr.evaluateBi(List.of(BigInteger.TWO, BigInteger.THREE))должно быть равно 4;expr.toString()должно быть равно(($0 + $1) - 1).
- Интерфейс/тесты BigIntegerListExpression.
- BigDecimalList (38, 39). Дополнительно реализуйте поддержку вычисления
выражений в типе
BigDecimalс позиционными переменными.- Конструктор позиционной переменной получает индекс переменной.
- При выводе позиционная переменная должна иметь вид
$index. - Метод вычисления выражения должен называться
evaluateBd, ему передаётся список значений переменных. - Например, для
expr = new Subtract(new Add(new Variable(0), new Variable(1)), new Const(BigDecimal.ONE)):expr.evaluateBd(List.of(BigDecimal.TWO, BigDecimal.THREE))должно быть равно 4;expr.toString()должно быть равно(($0 + $1) - 1).
- Интерфейс/тесты BigDecimalListExpression.
- List (34, 35). Дополнительно реализуйте поддержку выражений вычисления
выражений с позиционными переменными.
- Конструктор позиционной переменной получает индекс переменной.
- При вычислении выражения передаётся список значений переменных.
- При выводе позиционная переменная должна иметь вид
$index. - Например, для
expr = new Subtract(new Add(new Variable(0), new Variable(1)), new Const(1)):expr.evaluate(List.of(2, 3))должно быть равно 4;expr.toString()должно быть равно(($0 + $1) - 1).
- Интерфейс/тесты ListExpression.
Домашнее задание 11. Игра m,n,k
Решение должно находиться в пакете game.
Модификации
- Base
- Тестов не существует, так как они зависят от вашего кода.
- Двукруговой турнир (32-39)
- Добавьте поддержку двукругового турнира для нескольких участников.
- В рамках турнира каждый с каждым должен сыграть две партии, по одной каждым цветом.
- Выведите таблицу очков по схеме:
- 3 очка за победу;
- 1 очко за ничью;
- 0 очков за поражение.
- Гекс (36-39)
- Добавьте поддержку ромбической доски для игры Гекс (с тремя направлениями линий).
- В качестве примера, сделайте доску размером 11×11.
- Дополнительные ходы (34-37)
- Если в результате хода игрока на доске появляется новая последовательность из 4+ одинаковых символов, то он делает дополнительный ход.
- Игрок не может сделать несколько дополнительных ходов подряд.
- Multiplayer (38, 39)
- Добавьте возможность игры для 3 и 4 игроков (значки
@и#); - Если игрок проигрывает из-за ошибочного хода, то игра продолжается без него. Если остался только один игрок, он объявляется победителем.
- Добавьте возможность игры для 3 и 4 игроков (значки
Домашнее задание 9. Markdown to HTML
Модификации
- Base
- Исходный код тестов
- Откомпилированные тесты
- Аргументы командной строки: модификации
- 3637
- Добавьте поддержку
<<вставок>>:<ins>вставок</ins>и}}удалений{{:<del>удалений</del>
- Добавьте поддержку
- 3839
- Добавьте поддержку
```
кода __без__ форматирования```:<pre>кода __без__ форматирования</pre>
- Добавьте поддержку
```
- 3233
- Добавьте поддержку
%переменных%%:<var>переменных</var>
- Добавьте поддержку
- 3435
- Добавьте поддержку
!!примеров!!:<samp>примеров</samp>
- Добавьте поддержку
Домашнее задание 7. Разметка
Модификации
- Base
- Исходный код тестов:
- MarkupTester.java
- MarkupTest.java
- Аргументы командной строки: модификации
- Откомпилированных тестов не существует, так как они зависят от вашего кода
- Исходный код тестов:
- 3637, 3839, 4142, 4749
- Дополнительно реализуйте метод
toTex, генерирующий TeX-разметку:- Абзацы предваряются командой
\par{} - Выделенный текст заключается в
\emph{и} - Сильно выделенный текст заключается в
\textbf{и} - Зачеркнутый текст заключается в
\textst{и}
- Абзацы предваряются командой
- Добавьте поддержку:
- Нумерованных списков (класс
OrderedList, окружениеenumerate): последовательность элементов - Ненумерованных списков (класс
UnorderedList, окружениеitemize): последовательность элементов - Элементов списка (класс
ListItem, тег\item: последовательность абзацев и списков
- Нумерованных списков (класс
- Для новых классов поддержка Markdown не требуется
- Исходный код тестов
- Дополнительно реализуйте метод
- 3233, 3435
- Дополнительно реализуйте метод
toHtml, генерирующий HTML-разметку:- Абзацы окружаются тегом
p - Выделенный текст окружается тегом
em - Сильно выделенный текст окружается тегом
strong - Зачеркнутый текст окружается тегом
s
- Абзацы окружаются тегом
- Дополнительно реализуйте метод
Домашнее задание 6. Подсчет слов++
Модификации
- Base
- Класс должен иметь имя
Wspp - Исходный код тестов: WsppTest.java, WsppTester.java
- Откомпилированные тесты: WsppTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- 3637
- В выходном файле слова должны быть упорядочены по возрастанию длины, а при равной длине – по порядку первого вхождения во входной файл
- Вместо всех вхождений в файле надо указывать только последнее вхождение в строке
- В словах могут дополнительно встречаться
цифры и символы
$и_ - Класс должен иметь имя
WsppLast
- 3839
- В выходном файле слова должны быть упорядочены по возрастанию длины, а при равной длине – по порядку первого вхождения во входной файл
- Вместо всех вхождений в файле надо указывать только среднее вхождение строке
- В словах могут дополнительно встречаться
цифры и символы
$и_ - Класс должен иметь имя
WsppMiddle
- 3435
- В выходном файле слова должны быть упорядочены по возрастанию длины, а при равной длине – по порядку первого вхождения во входной файл
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер вхождения>, где номер вхождения считается с конца файла - В словах могут дополнительно встречаться
цифры и символы
$и_ - Класс должен иметь имя
WsppPosition
- 3233
- В выходном файле слова должны быть упорядочены в порядке вхождения во входной файл
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер вхождения>, где номер вхождения считается с конца файла - В словах могут дополнительно встречаться
цифры и символы
$и_ - Класс должен иметь имя
WsppPos
- 4142
- В выходном файле слова должны быть упорядочены по возрастанию длины, а при равной длине – по порядку первого вхождения во входной файл
- Вместо всех вхождений в файле надо указывать только последнее вхождение в строке
- В словах могут дополнительно встречаться
цифры и символы
$и_ - Класс должен иметь имя
WsppLast
- 4749
- В выходном файле слова должны быть упорядочены по возрастанию длины, а при равной длине – по порядку первого вхождения во входной файл
- Вместо номеров вхождений во всем файле надо указывать
<номер строки>:<номер вхождения>, где номер вхождения считается с конца файла - В словах могут дополнительно встречаться
цифры и символы
$и_ - Класс должен иметь имя
WsppPosition
Домашнее задание 5. Свой сканнер 
Модификации
- Base
- Исходный код тестов: FastReverseTest.java
- Откомпилированные тесты: FastReverseTest.jar
- Аргументы командной строки: модификации
- 3637
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел, находящихся в его столбце в последующих строках, и его самого
- Во вводе могут быть десятичные и восьмиричные числа
- Числа дополнительно могут разделяться открывающими и закрывающими скобками
- Класс должен иметь имя
ReverseMinC
- 3839
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел текущее число — правый нижний угол матрицы
- Во вводе могут быть десятичные и восьмиричные числа
- Числа дополнительно могут разделяться открывающими и закрывающими скобками
- Класс должен иметь имя
ReverseMin
- 3435
- Рассмотрим входные данные как (не полностью определенную) матрицу, выведите ее поворот по часовой стрелке
- Числа дополнительно могут разделяться открывающими и закрывающими скобками
- Класс должен иметь имя
ReverseRotate
- 3233
- Выведите (в реверсивном порядке) только числа, у которых сумма номеров строки и столбца четная
- Числа дополнительно могут разделяться открывающими и закрывающими скобками
- Класс должен иметь имя
ReverseEven
- 4142
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите среднее из чисел в его столбце и строке
- Числа дополнительно могут разделяться открывающими и закрывающими скобками
- Класс должен иметь имя
ReverseAvg
- 4749
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чиселв его столбце и строке
- Числа дополнительно могут разделяться открывающими и закрывающими скобками
- Класс должен иметь имя
ReverseSum
Домашнее задание 4. Подсчет слов 
Модификации
- Base ✅
- Класс должен иметь имя
WordStat - Исходный код тестов: WordStatTest.java, WordStatTester.java, WordStatChecker.java
- Откомпилированные тесты: WordStatTest.jar
- Аргументы командной строки: модификации
- Класс должен иметь имя
- FastSort ✅
- Пусть n – число слов во входном файле, тогда программа должна работать за O(n log n).
- 3637
- Назовём серединой слова подстроку, полученную удалением первых и последних 3 символов слова. Слова длины меньшей 7 игнорируются.
- Выходной файл должен содержать все различные середины слов, встречающихся во входном файле, упорядоченные по возрастанию длины (при равенстве – по первому вхождению).
- Класс должен иметь имя
WordStatLengthMiddle
- 3839
- Назовём аффиксами слова
его префикс и суффикс длины
n / 2, гдеn— длина слова. Слова длины один игнорируются. - Выходной файл должен содержать все различные аффиксы слов, встречающихся во входном файле, упорядоченные по возрастанию длины (при равенстве – по первому вхождению).
- Класс должен иметь имя
WordStatLengthAffix
- Назовём аффиксами слова
его префикс и суффикс длины
- 3435
- Назовём суффиксом слова подстроку,
состоящую из
n / 2последних символов слова, гдеn— длина слова. Слова длины один игнорируются. - Выходной файл должен содержать все различные суффиксы слов, встречающихся во входном файле, упорядоченные по возрастанию длины (при равенстве – по первому вхождению).
- Класс должен иметь имя
WordStatLengthSuffix
- Назовём суффиксом слова подстроку,
состоящую из
- 3233
- Выходной файл должен содержать все различные слова встречающиеся во входном файле, упорядоченные по возрастанию длины (при равенстве – по первому вхождению).
- Класс должен иметь имя
WordStatLength
- 4142
- Назовём серединой слова подстроку, полученную удалением первых и последних 3 символов слова. Слова длины меньшей 7 игнорируются.
- Выходной файл должен содержать все различные середины слов, встречающихся во входном файле, упорядоченные по возрастанию длины (при равенстве – по первому вхождению).
- Класс должен иметь имя
WordStatLengthMiddle
- 4749
- Назовём префиксом слова подстроку,
состоящую из
n / 2первых символов слова, гдеn— длина слова. Слова длины один игнорируются. - Выходной файл должен содержать все различные префиксы слов, встречающихся во входном файле, упорядоченные по возрастанию длины (при равенстве – по первому вхождению).
- Класс должен иметь имя
WordStatLengthPrefix
- Назовём префиксом слова подстроку,
состоящую из
Домашнее задание 3. Реверс 
Модификации
- Base ✅
- Исходный код тестов: ReverseTest.java, ReverseTester.java
- Откомпилированные тесты: ReverseTest.jar
- Аргументы командной строки: модификации
- Memory ✅
- Программа должна сначала считывать все данные в память, и только потом обрабатывать их.
- Пусть M – объём памяти, необходимый для сохранения ввода
в двумерном массиве
intминимального размера. Ваша программа должна использовать не более 4_M_ + 1024 байт памяти. - Накладные расходы на запуск вашей программы JVM не учитываются.
- 3637 ✅
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите максимум из чисел, находящихся в его столбце в последующих строках, и его самого
- Класс должен иметь имя
ReverseMaxC
- 3839
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите максимум из чисел текущее число — правый нижний угол матрицы
- Класс должен иметь имя
ReverseMax
- 3435 ✅
- Рассмотрим входные данные как (не полностью определенную) матрицу,
выведите ее поворот по часовой стрелке, например для ввода
вывод должен быть
1 2 3 4 5 6 7 8 97 5 1 8 6 2 9 3 4 - Класс должен иметь имя
ReverseRotate
- Рассмотрим входные данные как (не полностью определенную) матрицу,
выведите ее поворот по часовой стрелке, например для ввода
- 3233 ✅
- Выведите (в реверсивном порядке) только числа, у которых сумма номеров строки и столбца четная
- Класс должен иметь имя
ReverseEven
- 4142 ✅
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите среднее из чисел в его столбце и строке
- Класс должен иметь имя
ReverseAvg
- 4749 ❌
- Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чиселв его столбце и строке
- Класс должен иметь имя
ReverseSum
Домашнее задание 2. Сумма чисел 
Модификации
- Base ✅
- Исходный код тестов: SumTest.java, SumTester.java, базовые классы
- Откомпилированные тесты: SumTest.jar
- Аргументы командной строки: модификации
- 3637 ✅
- Входные данные являются 64-битными числами в формате с плавающей точкой
- На вход подаются десятичные и шестнадцатеричные числа
- Шестнадцатеричные числа имеют префикс
0x, например0xa.bp2равно (10+11/16)·4 равно 42.75 - Ввод регистронезависим
- Класс должен иметь имя
SumDoubleHex
- 3839 ✅
- Входные данные помещаются в тип BigDecimal
- На вход подаются десятичные и шестнадцатеричные числа
- Шестнадцатеричные числа имеют префикс
0x, например0xbscравно 11·10⁻¹² (мантисса и порядок являются целыми числами) - Ввод регистронезависим
- Класс должен иметь имя
SumBigDecimalHex
- 3435 ✅
- На вход подаются десятичные и шестнадцатеричные числа
- Шестнадцатеричные числа имеют префикс
0x - Ввод регистронезависим
- Класс должен иметь имя
SumHex
- 3233 ✅
- Входные данные являются 64-битными числами в формате с плавающей точкой
- Класс должен иметь имя
SumDouble
- 4142 ✅
- Входные данные помещаются в тип BigInteger
- восьмеричные числа имеют суффикс
o - Класс должен иметь имя
SumBigIntegerOctal
- 4749 ✅
- Входные данные являются 64-битными целыми числами
- восьмеричные числа имеют суффикс
o - Класс должен иметь имя
SumLongOctal
Description
Languages
Java
100%