Skip to content

Tea-O/CT

Repository files navigation

Тесты к курсу «Введение в программирование»

Условия домашних заданий

Домашнее задание 13. Обработка ошибок

Модификации

  • Base
    • Класс ExpressionParser должен реализовывать интерфейс Parser
    • Классы CheckedAdd, CheckedSubtract, CheckedMultiply, CheckedDivide и CheckedNegate должны реализовывать интерфейс TripleExpression
    • Нельзя использовать типы long и double
    • Нельзя использовать методы классов Math и StrictMath
    • Исходный код тестов
      • Первый аргумент: easy или hard
      • Последующие аргументы: модификации

Домашнее задание 12. Разбор выражений

Модификации

  • 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.

Домашнее задание 11. Выражения

Модификации

  • Base
  • Triple (31-39)
    • Дополнительно реализуйте поддержку выражений с тремя переменными: x, y и z.
    • Интерфейс TripleExpression.
  • BigInteger (36-37)
    • Дополнительно реализуйте вычисления в типе BigInteger.
    • Интерфейс BigIntegerExpression.
  • BigDecimal (38-39)
    • Дополнительно реализуйте вычисления в типе BigDecimal .
    • Интерфейс BigDecimalExpression.

Домашнее задание 10. Игра m,n,k

Тесты не предусмотрены. Решение должно находиться в пакете game.

Модификации

  • Переговоры (38-39)
    • У игрока должна быть возможность сдаться, если он не хочет продолжать игру.
    • Игрок может вместо своего хода предложить ничью. Если второй игрок принимает предложение, то игра заканчивается. В противном случае, игра продолжается и игрок делает ход. Повторное предложение ничьей на том же ходу считается ошибкой.
  • Турнир (36-37)
    • Добавьте поддержку кругового турнира для нескольких участников.
    • В рамках кругового турнира каждый с каждым должен сыграть две партии, по одной каждым цветом.
    • Выведите таблицу очков по схеме:
      • 3 очка за победу;
      • 1 очко за ничью;
      • 0 очков за поражение.
  • Гекс (36-39)
    • Добавьте поддержку ромбической доски для игры Гекс (с тремя направлениями линий).
    • В качестве примера, сделайте доску размером 11×11.
  • Multiplayer (34-35)
    • Добавьте поддержку значков - и |;
    • Добавьте возможность игры для 3 и 4 игроков.
  • Матчи (31-33)
    • Добавьте поддержку матчей: последовательность игр до указанного числа побед.
    • Стороны в матче должны меняться каждую игру.

Домашнее задание 9. Markdown to HTML

Модификации

  • Базовая
  • InsDel (38, 39)
    • Добавьте поддержку <<вставок>>: <ins>вставок</ins> и }}удалений{{: <del>удалений</del>
  • Pre (36, 37)
    • Добавьте поддержку ```кода __без__ форматирования```: <pre>кода __без__ форматирования</pre>
  • Quote (34, 35)
    • Добавьте поддержку ''цитат'': <q>цитат</q>
  • Var (31-33)
    • Добавьте поддержку %переменных%: <var>переменных</var>

Домашнее задание 7. Разметка

Модификации

  • Base
  • 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 не требуется
    • Исходный код тестов

Домашнее задание 6. Подсчет слов++

Модификации

  • 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

Домашнее задание 5. Свой сканнер

Модификации

  • 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

Домашнее задание 4. Подсчет слов

Модификации

  • Base
  • Count (34, 35, 38, 39)
    • В выходном файле слова должны быть упорядочены по возрастанию числа вхождений, а при равном числе вхождений – по порядку первого вхождения во входном файле.
    • Класс должен иметь имя WordStatCount
  • Words (31, 32, 33, 36, 37)
    • В выходном файле слова должны быть упорядочены в лексикографическом порядке
    • Класс должен иметь имя WordStatWords
  • Sort (36-39)
    • Пусть n – число слов во входном файле, тогда программа должна работать за O(n log n).

Домашнее задание 3. Реверс

Модификации

  • Base
  • Sum2 (38, 39)
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чисел в прямоугольнике верхний левый угол матрицы — текущее число
    • Класс должен иметь имя ReverseSum2
  • Min2 (36, 37)
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел верхний левый угол матрицы — текущее число
    • Класс должен иметь имя ReverseMin2
  • Linear (36-39)
    • Пусть n – сумма числа чисел и строк во входе, тогда программе разрешается потратить не более 6_n_+O(1) памяти
  • Transpose (34-35)
    • Рассмотрим входные данные как (не полностью определенную) матрицу, выведите ее в транспонированном виде
    • Класс должен иметь имя ReverseTranspose
  • Odd2 (31-33)
    • Выведите (в реверсивном порядке) только числа, у которых сумма номеров строки и столбца нечетная
    • Класс должен иметь имя ReverseOdd2

Домашнее задание 2. Сумма чисел

Модификации

  • BigIntegerHex (38-39)
    • Входные данные помещаются в тип BigInteger
    • Шестнадцатеричные числа имеют префикс 0x
    • Класс должен иметь имя SumBigIntegerHex
  • LongHex (36-37)
    • Входные данные являются 64-битными целыми числами
    • Шестнадцатеричные числа имеют префикс 0x
    • Класс должен иметь имя SumLongHex
  • Float (34-35)
    • Входные данные являются 32-битными числами с формате с плавающей точкой
    • Класс должен иметь имя SumFloat
    • Числа разделяются пробелами-разделителями
  • Long (31-33)
    • Входные данные являются 64-битными целыми числами
    • Класс должен иметь имя SumLong

Для того, чтобы протестировать исходную программу:

  1. Скачайте откомпилированные тесты (SumTest.jar)
  2. Откомпилируйте Sum.java
  3. Проверьте, что создался Sum.class
  4. В каталоге, в котором находится Sum.class выполните команду
       java -jar <путь к SumTest.jar> Base
    
    • Например, если SumTest.jar находится в текущем каталоге, выполните команду
        java -jar SumTest.jar Base
    

Исходный код тестов:

Домашнее задание 1. Запусти меня!

Модификации

  • RunMe
    1. Скачайте исходный код (RunMe.java)
    2. Создайте скрипт, компилирующий и запускающий RunMe из командной строки с выданными вам аргументами командной строки
    3. Следуйте выведенной инструкции

Рекомендации по выполнению модификации

  1. Проверьте версию Java: 1. Запустите javac --version и проверьте, что версия находится в диапазоне 11..17. 1. Запустите java --version и проверьте, что версия такая же как и у javac.
  2. Скачайте RunMe.java
  3. Откомпилируйте RunMe.java: 1. Запустите javac RunMe.java 1. Убедитесь, что компиляция завершилась бе ошибок 1. Проверьте, что появился RunMe.class
  4. Запустите RunMe: 1. Запустите java RunMe [шесть] [слов] [пароля] [пришедшего] [на] [email] 1. При правильном исполнении вы должны получить ссылку Если получено сообщение об ошибке — исправьте её и запустите повторно 1. Зайдите по полученной ссылке и убедитесь, что она правильная
  5. Напишите и протестируйте скрипт: 1. Напишите скрипт, включающий команды компиляции и запуска. Если вы не умеете писать скрипты, во воспользуйтесь одной из инструкций: Windows, Linux, macOS 1. Запустите и проверьте, что вы получили ту же ссылку, что и в предыдущем пункте 1. Сдайте скрипт преподавателю
  6. Вы можете получить больше плюсиков, модифицируя код RunMe.java

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages