me 380611c4df
All checks were successful
Fast Reverse Tests / test (push) Successful in 24s
Reverse Tests / test (push) Successful in 8s
Sum Tests / test (push) Successful in 9s
Word Stat Tests / test (push) Successful in 8s
add solutions for hw6:Base
2026-02-02 13:25:10 +05:00
2026-02-02 13:02:15 +05:00
2026-01-29 23:20:12 +05:00
2026-02-02 13:25:10 +05:00
2026-02-02 10:40:50 +05:00
2026-01-30 12:49:32 +05:00
2026-02-02 13:03:16 +05:00
2026-01-29 23:20:12 +05:00

Table of Contents

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

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

Домашнее задание 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
  • 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 игроков (значки @ и #);
    • Если игрок проигрывает из-за ошибочного хода, то игра продолжается без него. Если остался только один игрок, он объявляется победителем.

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

Модификации

  • Base
  • 3637
    • Добавьте поддержку <<вставок>>: <ins>вставок</ins> и }}удалений{{: <del>удалений</del>
  • 3839
    • Добавьте поддержку ```кода __без__ форматирования```: <pre>кода __без__ форматирования</pre>
  • 3233
    • Добавьте поддержку %переменных%%: <var>переменных</var>
  • 3435
    • Добавьте поддержку !!примеров!!: <samp>примеров</samp>

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

Модификации

  • Base
    • Исходный код тестов:
    • Откомпилированных тестов не существует, так как они зависят от вашего кода
  • 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. Свой сканнер Fast Reverse Tests

Модификации

  • Base
    • Исходный код тестов: FastReverseTest.java
    • Откомпилированные тесты: FastReverseTest.jar
      • Аргументы командной строки: модификации
  • 3637
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел, находящихся в его столбце в последующих строках, и его самого
    • Во вводе могут быть десятичные и восьмиричные числа
    • Числа дополнительно могут разделяться открывающими и закрывающими скобками
    • Класс должен иметь имя ReverseMinC
  • 3839
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите минимум из чисел текущее число — правый нижний угол матрицы
    • Во вводе могут быть десятичные и восьмиричные числа
    • Числа дополнительно могут разделяться открывающими и закрывающими скобками
    • Класс должен иметь имя ReverseMin
  • 3435
    • Рассмотрим входные данные как (не полностью определенную) матрицу, выведите ее поворот по часовой стрелке
    • Числа дополнительно могут разделяться открывающими и закрывающими скобками
    • Класс должен иметь имя ReverseRotate
  • 3233
    • Выведите (в реверсивном порядке) только числа, у которых сумма номеров строки и столбца четная
    • Числа дополнительно могут разделяться открывающими и закрывающими скобками
    • Класс должен иметь имя ReverseEven
  • 4142
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите среднее из чисел в его столбце и строке
    • Числа дополнительно могут разделяться открывающими и закрывающими скобками
    • Класс должен иметь имя ReverseAvg
  • 4749
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чиселв его столбце и строке
    • Числа дополнительно могут разделяться открывающими и закрывающими скобками
    • Класс должен иметь имя ReverseSum

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

Модификации

  • Base
  • 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. Реверс Reverse Tests

Модификации

  • Base
  • Memory
    • Программа должна сначала считывать все данные в память, и только потом обрабатывать их.
    • Пусть M объём памяти, необходимый для сохранения ввода в двумерном массиве int минимального размера. Ваша программа должна использовать не более 4_M_ + 1024 байт памяти.
    • Накладные расходы на запуск вашей программы JVM не учитываются.
  • 3637
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите максимум из чисел, находящихся в его столбце в последующих строках, и его самого
    • Класс должен иметь имя ReverseMaxC
  • 3839
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите максимум из чисел текущее число — правый нижний угол матрицы
    • Класс должен иметь имя ReverseMax
  • 3435
    • Рассмотрим входные данные как (не полностью определенную) матрицу, выведите ее поворот по часовой стрелке, например для ввода
          1 2 3 4
          5 6
          7 8 9
      
      вывод должен быть
          7 5 1
          8 6 2
          9 3
          4
      
    • Класс должен иметь имя ReverseRotate
  • 3233
    • Выведите (в реверсивном порядке) только числа, у которых сумма номеров строки и столбца четная
    • Класс должен иметь имя ReverseEven
  • 4142
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите среднее из чисел в его столбце и строке
    • Класс должен иметь имя ReverseAvg
  • 4749
    • Рассмотрим входные данные как (не полностью определенную) матрицу, вместо каждого числа выведите сумму чиселв его столбце и строке
    • Класс должен иметь имя ReverseSum

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

Модификации

  • Base
  • 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
No description provided
Readme 665 KiB
Languages
Java 100%