Создайте класс, описывающий результаты проведённого матча между двумя командами. Класс должен содержать поля, описывающие названия команд и очки, заработанные каждой из команд. Очки должны быть целыми положительными числами. Примером такого события может быть футбольный матч.

Создайте класс, описывающий результаты группового соревнования между группами команд. Данный класс должен оперировать набором из объектов первого класса. Данный класс должен предоставлять следующие итераторы:

  • Получения списка названий команд, отсортированных по названию команд.
  • Получение списка названий команд, отсортированных по количеству полученных в матчах очков.
  • Удаление результата в соответствии с условием, определённым в блоке.
  • Получение списка матчей.

Класс также должен предоставлять методы для

  • добавление нового результата в список.

Предоставленные итераторы должны позволять взаимодействовать с данными в формате нумераторов, если это необходимо.

Класс не должен предоставлять для потребителей доступ к массиву объектов результата матчей.

Для проверки способностей данного класса реализуйте следующие действия:

  • Считайте результаты матчей между командами из CSV-файла.
  • Выведите результаты матчей в виде сводной таблицы. Имена команд в столбцах и строках должны быть отсортированы по названию.
  • Выведите сводную таблицу в интерактивном виде.
    1. Сначала таблица пуста.
    2. Затем пользователь нажимает на клавишу .
    3. Таблица отображается по результатам 2 матча.
    4. Переход к пункту №3.
  • Оцените какая из представленных систем начисления очков наиболее справедлива:
    1. Победа: 3 очка, ничья: 1 очко, проигрыш: 0 очков.
    2. Победа: 2 очка, ничья: 1 очко, проигрыш: 0 очков.
    3. Победа: 2 очка, ничья: 0 очков, проигрыш: -1 очко.

Для реализации взаимодействия создайте класс, для реализации меню в нём рекомендуется использовать лямбды.