Программирование

144 группа

Тимофей Брыксин

Студент TODO №1 №2 №3 №4 №5 Тест 1 №6 №7 №8 №9 Тест 2
35 1 2 3 4 5 1 2 AVL-дерево 1 2 Бор Приоритетная очередь real quick sort Tic Tac Toe v.1 Tic Tac Toe v.2 Tic tac toe v.3 Доклад Найди пару
Вильданов Эмир 7
Власов Илья
Вяткин Артём 1
Держко Александр 18
Криворучко Денис 9
Порсев Егор
Пяйве Олег
Уткин Илья

Задачи

Тест 2. 22.05.20
  1. Найди пару

    Реализовать игру "Найди пару". При запуске отображается поле с кнопками размера N x N, где N чётное, кнопки без надписей. N принимается как параметр командной строки. Каждой кнопке ставится в соответствие число от 0 до N2 / 2, каждое число из этого диапазона должно встречаться на поле ровно дважды. Игрок нажимает на две произвольные (разные) кнопки, на них показывается соответствующие им числа. Если числа совпали, кнопки делаются неактивными. Если числа не совпали, кнопки возвращаются в изначальное положение. Игра заканчивается, когда игрок открыл все пары чисел.

Домашняя работа 9. 29.04.20
  1. Доклад

    https://docs.google.com/spreadsheets/d/1wfYR-zXcv3AKVTtwhI7GSoE0iNJkq1Zvmnujq4cBD-4/edit?usp=sharing

    Необходимо выбрать в таблице тему и записать себя. Каждый доклад должен быть на 10-15 минут, вместе с презентацией.
    Необходимо включить, как теоритическую информацию, так и практическую с примером использования.

Домашняя работа 8. 29.04.20
Слайды
  1. Tic tac toe v.3

    Добавить поддержку мультиплеера в крестики-нолики

Домашняя работа 7. 17.04.20
Слайды
  1. Tic Tac Toe v.1

    Крестики-нолики для игры с самим собой (inclass задание)

  2. Tic Tac Toe v.2

    Добавить в крестики-нолики меню и бота. В меню должна быть кнопка со стартом игры, а так же выбором сложности и играющей стороны. Бот с разными уровнями сложности и для игры за разные стороны. По окончанию игры, пишется победитель и по кнопке возврат в меню.

Домашняя работа 6. 10.04.20
Слайды
  1. real quick sort

    Реализуйте асинхронную быструю сортировки с помощью сопрограмм.
    Проведите замеры времени, сравните с обычной реализацией.

Тест 1. 20.03.20
  1. Приоритетная очередь

    Реализовать очередь с приоритетами в виде шаблонного класса.

    Очередь должна иметь методы:
    - enqueue() -- принимающий на вход значение и численный приоритет
    - dequeue() -- возвращающий значение с наивысшим приоритетом и удаляющий его из очереди.
    Если очередь пуста, dequeue() должен бросать исключение.
    Юнит-тесты обязательны.

Домашняя работа 5. 16.03.20
Слайды
Конспект (системы сборки)
Конспект (CI)
Использование CircleCI для запуска code style checker и unit тестов
  1. Бор

    Реализовать бор (http://neerc.ifmo.ru/wiki/index.php?title=%D0%91%D0%BE%D1%80)
    Должны быть поддержаны следующие методы:

    boolean add(String element); (возвращает true, если такой строки ещё не было, работает за O(|element|))
    boolean contains(String element); (работает за O(|element|))
    boolean remove(String element); (возвращает true, если элемент реально был в дереве, работает за O(|element|))
    int size(); (работает за O(1))
    int howManyStartWithPrefix(String prefix); (работает за O(|prefix|))
    Также бор должен реализовывать интерфейс с методами:

    void serialize(OutputStream out) throws IOException;
    void deserialize(InputStream in) throws IOException; (заменяет старое дерево данными из стрима)
    Стандартный сериализатор использовать нельзя.

Домашняя работа 4. 12.03.20
Слайды
Конспект (SOLID)
Конспект (исключения)
  1. Реализовать класс для работы с хеш-таблицей (на списках). Общение с пользователем должно происходит в интерактивном режиме: добавить значение в хеш-таблицу, удалить значение из хеш-таблицы, поиск значения в хеш-таблице, показать статистику по хеш-таблице (общее число ячеек, load factor, число конфликтов, максимальная длина списка в конфликтных ячейках и т.п.), заполнить хеш-таблицу содержимым файла, выбрать хеш-функцию для подсчета хеша (из заранее заданных в коде). Смена хэш-функции должна происходить во время работы программы, в класс используемая хеш-функция должна передаваться из клиентского кода.

  2. Разработать и реализовать иерархию классов, описывающих дерево разбора арифметического выражения. Используя их, реализовать класс, вычисляющий значение выражения по дереву. Классы, представляющие операнды и операторы, должны сами уметь себя вычислять и печатать. Дерево разбора хранится в файле в виде (<операция> <операнд1> <операнд2>), где <операнд1> и <операнд2> сами могут быть деревьями, либо числами. Например, выражение (1 + 1) * 2 представляется в виде (* (+ 1 1) 2). Должны поддерживаться операции {+, -, , /} и целые числа в качестве аргументов. Требуется построить дерево в явном виде, распечатать его (не обязательно так же, как во входном файле) и посчитать значение выражения обходом дерева. Можно считать, что входной файл корректен. Пример — по входному файлу ( * (+ 1 1) 2) может печататься
    *
    + 2
    1 1
    и выводиться 4

Домашняя работа 3. 04.03.20
Слайды
Конспект
  1. AVL-дерево

    Реализуйте класс AVL дерева, который реализует интерфейс Map. В каждой вершине хранится ключ -- по нему строится дерево и значение -- некий хранимый тип. Ключ и значение должны задаваться через generic.

Домашняя работа 2. 26.02.20
Слайды
Конспект №1
Конспект №2
  1. Теперь все задачи требуют написания unit-тестов к ним (предыдущей домашней работы тоже касается)

    Определите минимальное количество символов, которые нужно удалить из строки так, чтобы она не содержала «xxx» в качестве подстроки. Выведите 0, если строка изначально не содержит запрещенной подстроки «xxx». Удалять символы можно в произвольных позициях (не обязательно подряд).

  2. Удалите из массива все повторяющиеся элементы. Необходимо оставить только правое вхождение, относительный порядок оставшихся элементов не должен быть изменён.

Домашняя работа 1. 18.02.20
Слайды
Конспект №1
Конспект №2
Курс по Kotlin
  1. Дан массив целых чисел x[1]...x[m+n], рассматриваемый как соединение двух его отрезков: начала x[1]...x[m] длины m и конца x[m+1]...x[m+n] длины n. Не используя дополнительных массивов, переставить начало и конец.

  2. Реализовать подсчет факториала (рекурсивно и итеративно).

  3. Заданы две строки: s1 и s2. Найти количество вхождений s2 в s1 как подстроки.

  4. Реализовать программу, проверяющую, является ли строка палинромом.

  5. Написать программу, которая считает количество непустых строк в исходном файле. Строка считается пустой, если состоит только из пробелов и табуляций (символ \t), или в ней нет символов вообще.

© 2014-2020 HwProj