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

244-2016 группа

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

Студент TODO №1 №2 №3 №4 Тест 1 №5 Тест 2
15 1 2 3 4 5 1 2 3 4 Презентация Текст
Ашмарова Виктория 2
Власова Анна
Короткий Иван 2
Люлина Елена
Миронович Елизавета
Ножкин Илья
Пономарева Наталья
Терехов Михаил
Фадеев Виктор 11

Задачи

Тест 2. 15.05.18
  1. Презентация
  2. Текст
Домашняя работа 5. 07.04.18
Монады: часть 2. MonadPlus
Про курсовые
  1. Реализовать функцию, которая по заданному числу n выводит разложения его на положительные слагаемые (с точностью до порядка разложения)

  2. С помощью оператора >>= опишите функцию, которая для данного числа n создает список из всех попарных произведений чисел от 1 до n. ( Т.е. что-то такое: [1*1, 1*2, 1*3, …, 1*n, 2*1, 2*2, …, n*n] - всего n*n элементов)

  3. Используя монадичесие функции, опишите фунцию, которая ищет в списке первый элемент, больший своих соседей (предыдущего и следующего)

  4. Дано выражение, содержащее переменную, константы, арифметические операции. Посчитать производную этого выражения по этой переменной, провести в полученном выражении для производной возможные упрощения (например, 1*x = x). Подходящий тип данных разработать самостоятельно

Тест 1. 20.03.18
  1. Записать в point-free-стиле let f g l = List.map g (List.tail l)

  2. Реализовать функцию suffixes, которая принимает как аргумент список xs и возвращает список всех его суффиксов в порядке убывания длины. Например, suffixes [1,2,3,4] = [[1,2,3,4],[2,3,4] ,[3,4],[4], [] ]

  3. Реализовать функцию, которая выводит крест из символов 'x' размера n. Так, для n = 4 будет выведено

    x x
    x x
    x
    x x
    x x

  4. Написать программу работы с очередью c приоритетами, которая в диалоговом режиме позволяет осуществлять следующие операции:
    0 - выход
    1 - добавление значения с заданным приоритетом
    2 - получить значение с заданным приоритетом
    3 - получить значение с наивысшим приоритетом
    4 - напечатать очередь
    Начинаем с пустой очереди.

  5. Реализовать функцию, которая заменяет значение в каждом узле дерева на случайное целое число. Число в каждом узле дожно быть больше, чем значения во всех узлах в соответствии с прямым обходом.

Домашняя работа 4. 13.03.18
Ввод-вывод, введение в монады
  1. Реализовать три варианта функции, подсчитывающей количество четных чисел в списке (с использованием стандартных функций map, filter, foldr). Использование рекурсии не допускается.

  2. Написать программу, которая в диалоговом режиме позволяет осуществлять следующие операции:
    0 - exit
    1 - add value to sorted list
    2 - remove value from list
    3 - print list
    Все операции должны сохранять сортированность. Начинаем с пустого списка.

  3. По дереву получить список его значений при некотором обходе (будет полезно объявление дерева экземпляром Foldable).

  4. Написать программу - телефонный справочник. Она должна уметь хранить имена и номера телефонов, в интерактивном режиме осуществлять следующие операции:
    0 - выйти
    1 - добавить запись (имя и телефон)
    2 - найти телефон по имени
    3 - найти имя по телефону
    4 - сохранить текущие данные в файл
    5 - считать данные из файла
    Формат представления данных в файле придумать самостоятельно

Домашняя работа 3. 06.03.18
Введение в Haskell (2)
  1. Записать следующую функцию в point-free стиле: func x l = map (\y -> y*x) l. В комментариях показать все промежуточные шаги преобразований.

  2. Реализовать функцию, генерирующую бесконечный список, содержащий все целые положительные числа, состоящие только из цифр 1, 7 и 9 (числа должны идти в порядке возрастания). Например, первые 10 чисел в этом списке должны быть [1,7,9,11,17,19,71,77,79,91]. Функция должна быть реализована с помощью "завязывания в узел".

  3. Вывести первую позицию в списке, на которой сумма двух соседних элементов максимальна. Например, для [1, 5, 6, 2] функция должно вернуть значение 2.

  4. Реализовать функцию, которая по произвольной строке проверяет корректность скобочной последовательности в этой строке. Должны поддерживаться три типа скобок.

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

Домашняя работа 2. 27.02.18
Введение в Haskell (1)
  1. Реализовать функцию обращения списка. Функция должна работать за линейное время (подсказка: конкатенация — это плохо)

  2. Реализовать функцию, которая формирует список из n последовательных степений двойки (n — аргумент функции)

  3. Реализовать функцию, которая вычисляет сумму цифр данного числа

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

  5. По трём заданным спискам составить список сумм соответствующих их элементов. Длина результирующего списка должна быть равна длине самого длинного из заданных списков, при этом «закончившиеся» списки не должны давать вклада в суммы. Например, если на вход подать [1,2,3] [4,5] [6], то на выходе должно получиться [11,7,3].

Домашняя работа 1. 20.02.18
Введение в лямбда-исчисление, презентация
Введение в лямбда-исчисление, конспект
  1. Реализовать программу подсчета факториала

  2. Реализовать программу подсчета i-го числа Фибоначчи

© 2014-2018 HwProj