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

244 группа

Юрий Литвинов

Студент TODO №1 №2 №3 №4
202 1 2 3 4 1 2 3 1 2 3 4 1 2 3
Zhilkin Fedor 10
Алексей Гирин 7
Андреев Сергей 10
Асеева Серафима 10
Афанасов Артем 14
Балашов Илья 7
Гуданова Варвара 10
Ивашева Валерия 10
Камкова Екатерина 10
Короткий Иван 13
Коёкин Ярослав 10
Мендалиев Роман 10
Мишуров Илья 13
Панфилёнок Дмитрий 10
Пиккио Полина 14
Пономарёв Егор 14
Попок Артем 10
Смирнов Александр 10
Холодаева Екатерина 10

Задачи

Домашняя работа 4. 15.03.19
Нетипизированное λ-исчисление (слайды)
  1. Выполнить бета-редукцию λ-терма ((λa.(λb.b b) (λb.b b)) b) ((λc.(c b)) (λa.a)). Решение (в виде последовательности преобразований) набрать в TeX-е и выложить файл .tex на GitHub. Может помочь www.papeeria.com

  2. Докажите, что S K K = I. Доказательство набрать в TeX-е и выложить на GitHub. Делать надо самостоятельно, это известное (и несложное) упражнение, так что гуглить нечестно.

  3. Реализовать интерпретатор лямбда-выражений, выполняющий бета-редукцию по нормальной стратегии. Лямбда-выражения задаются через размеченные объединения. Должна поддерживаться альфа-конверсия для избежания захвата свободных переменных.

Домашняя работа 3. 01.03.19
Продолжение про F# (слайды)
Продолжение про F# (конспект)
Пример репозитория со сборкой на AppVeyor и Travis
  1. Реализовать три варианта функции, подсчитывающей количество четных чисел в списке (с использованием стандартных функций map, filter, fold). Использование рекурсии не допускается.

  2. Реализовать функцию, применяющую функцию к каждому элементу двоичного дерева и возвращающую новое двоичное дерево, каждый элемент которого --- результат применения функции к соответствующему элементу исходного дерева (map для деревьев)

  3. Посчитать значение дерева разбора арифметического выражения, заданного через вложенные discriminated union-ы

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

    Ко всем задачам обязательны комментарии и юнит-тесты

Домашняя работа 2. 22.02.19
Введение в F# (слайды)
Введение в F# (конспект)
  1. Реализовать функцию, которая выдает первую позицию вхождения заданного числа в список

  2. Реализовать функцию, проверяющую, является ли строка палиндромом

  3. Написать mergesort: функцию, которая принимает список и возвращает отсортированный список

    Юнит-тесты ко всем задачам обязательны и должны быть в отдельном проекте. Сборка в CI тоже обязательна.

Домашняя работа 1. 15.02.19
Введение (слайды)
Введение (конспект)
Хороший блог про F#
Домашняя страница F#
Онлайн-интерпретатор, умеющий F#
  1. Посчитать факториал

  2. Посчитать числа Фибоначчи (за линейное время)

  3. Реализовать функцию обращения списка (за линейное время)

  4. Реализовать функцию, которая принимает на вход n и m и возвращает список из элементов [2n; 2n + 1; ...; 2n + m]

© 2014-2019 HwProj