Практикум на ЭВМ

171 (2015/2016) группа

Максим Журавлев

Студент TODO №1 №2 №3 №4 Тест 1 №5
92 ASM 2 3 4 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 1 2 3 4 1 GIF
Блинов Сергей 28
Волков Григорий
Ирина Лень
Калабкин Евгений
Кантеев Леонид
Кеворкянц Павел
Костицын Михаил 28
Кострюков Алексей
Костюков Юрий
Лебедев Михаил
Милосердов Владимир
Минаев Александр
Мусатян Сабрина
Поляков Александр
Смрнов Кирилл
Степанова Любовь 23
Тюляндин Иван
Фадеева Анастасия
Чернов Андрей
Чугаев Анатолий
Шабанов Владимир 13
Шумилов Пётр

Задачи

Домашняя работа 5. 17.04.16
Пример отрисовки двумерного массива цветов
Еще рисование в Scala
Настройка зависимостей и библиотек в IDEA
What is the difference between “Module Dependencies” and “Libraries” in IntelliJ IDEA?
Выжимка описания формата GIF
Для общего развития презентация "Графика в функциональном стиле на Scala"
Стандарт формата
Для справки реализация GIFImageReader на Java
Scodec root
Пример работы с scodec
  1. GIF

    Прочитать и отрисовать анимированный GIF-файл.
    1. Бинарные данные -> структуры данных Scala (библиотека парсер-комбинаторов scodec. Версия должна совпадать с версией Scala, например для 2.11 - org.scodec:scodec-core_2.11:1.9.0).
    2. Получение несжатого массива цветов пикселей из представления LZW - без библиотечного кода.
    3. Рендер кадра с помощью scala-swing (см. пример; компилировалось с org.scala-lang:scala-swing:2.10.6)
    4. Анимация - с использованием любого механизма отложенного вызова кода

Тест 1. 15.04.16
  1. Реализовать функцию, распределяющую данный набор слов по строкам. Исходные данные: List[String], width : Int и выравнивание. Вывод - List[List[ParagraphElement]]

Домашняя работа 4. 29.03.16
Twitter Scala School
Прототип
  1. Twitter - известная компания, использующая Scala в разработке. Начинали они, когда Scala была менее популярна, чем сейчас, поэтому им приходилось самим учить нанятых разработчиков. Материалы были опубликованы и известны как Twitter Scala School.
    Задачи этой домашней работы будут посвящены обработке коллекции твитов.

    class Tweet(val user: String, val text: String, val retweets: Int)

    Реализуем абстрактный класс TweetSet и два класса наследника: Empty() и NonEmpty(elem: Tweet, left: TweetSet, right: TweetSet) т.е. будем представлять коллекцию с помощью бинарного дерева. См. ссылку на файл с прототипом.

    Как и в прошлой задаче, присылайте один файл.

    Реализовать метод def filter(p: Tweet => Boolean): TweetSet - возвращает подмножество твитов, для которых имеет место предикат p
    Пример: tweets.filter(tweet => tweet.retweets > 10)
    Подсказка: реализовать вспомогательный метод с аккумулятором def filterAcc(p: Tweet => Boolean, acc: TweetSet): TweetSet

  2. Реализовать метод объединения двух множеств:
    def union(that: TweetSet): TweetSet - возвращает множество, в которое включены все элементы, содержащиеся или в исходном множестве (this) или данном (that)
    Часть задачи - определить, нужна ли реализация по умолчанию в родительском классе или нет

  3. Реализовать метод, возвращающий список твитов, отсортированный по количеству ретвитов.
    def descendingByRetweet: TweetList
    Идея типична для трансформации иммутабельных структур данных - начинаем с пустого аккумулятора заполняемой структуры, получаем нужный элемент исходной, удаляем элемент из исходной (создаем новую коллекцию на основании исходной такую, что в ней отсутствует нужный элемент. Метод remove уже реализован), передаем в рекурсивный вызов обновленные аккумулятор и коллекцию.
    Подсказка: начните с реализации метода def mostRetweeted: Tweet, возвращающего самый цитируемый твит.

  4. Реализуйте метод, принимающий список ключевых слов (List[String]), и возвращающий список (TweetList) всех твитов, содержащих хотя бы одно из ключевых слов, упорядоченный по убыванию количества ретвитов.
    Подсказка: используйте метод exists класса List и contains класса java.lang.String.

Домашняя работа 3. 20.03.16
  1. В следующих задачах реализуем тип данных множество без использования изменяемых структур данных. Сдавать одним файлом.
    type Set = Int => Boolean //Множество с элементами типа Int представим функцией, получающей число и дающей ответ, сожержится ли такое число в множестве.

    def contains(s: Set, elem: Int): Boolean = s(elem)

    Написать функцию возвращающую множество из одного элемента
    def singletonSet(elem: Int): Set = ???

  2. Объединение двух множеств (s || t)
    def union(s: Set, t: Set): Set = ???

  3. Пересечение (s * t)
    def intersect(s: Set, t: Set): Set = ???

  4. Разница (s - t)
    def diff(s: Set, t: Set): Set = ???

  5. Подмножество s, удовлетворяющее условию p
    def filter(s: Set, p: Int => Boolean): Set = ???

  6. у нас нет способа извлечь все элементы множества, поэтому проверки типа "верно ли для всех" и аналогичные проверяют диапазон [-1000; 1000]
    val bound = 1000
    def toString(s: Set): String = {
    val xs = for (i <- -bound to bound if contains(s, i)) yield i
    xs.mkString("{", ",", "}")
    }
    Проверка, что все элементы множества s удовлетворяют условию p
    def forall(s: Set, p: Int => Boolean): Boolean = {
    def iter(a: Int): Boolean = {
    if (???) ???
    else if (???) ???
    else iter(???)
    }
    iter(???)

  7. Есть ли среди элементов диапазона элемент множества s, удовлетворяющий p
    def exists(s: Set, p: Int => Boolean): Boolean = ???

  8. Новое множество, полученное из s, применением к каждому элементу функции f
    def map(s: Set, f: Int => Int): Set = ???

Домашняя работа 2. 01.03.16
Сайт языка
JDK
IDE
IDE
  1. Реализовать функцию, вычисляющую элемент на позиции (x, y) в треугольнике Паскаля

  2. Реализовать функцию, проверяющую сбалансированность скобок в List[Char]

  3. Реализовать функцию
    def countChange(money: Int, coins: List[Int]): Int,
    вычисляющую количество способов набрать сумму money комбинациями монет с номиналами из coins

  4. Разминочные задачи перечислены после интересных. Рекомендую начать с разминочных. Задачи на рекурсию, а не на вызов готовых функций.
    Посчитать действительные корни квадратного уравнения. Кубического. Вернуть список (0, 1, 2 или три элемента)

  5. Обратить список.

  6. Добавить элемент в конец списка

  7. Длина списка

  8. Сумма элементов списка

  9. Отфильтровать список по заранее заданному критерию

  10. Фильтр с использованием переданной функции

Домашняя работа 1. 17.02.16
Описание ассемблера
  1. ASM

    Написать интерпретатор "игрушечного" ассемблера в соответствие со спецификацией по ссылке

  2. Посчитать сумму чётных чисел Фибоначчи не превосходящих 2000000.

  3. Найти 10001-ое простое число.

  4. Найти наибольший простой делитель числа 208574561.

© 2014-2018 HwProj