Студент | TODO | №1 | №2 | №3 | №4 | №5 | №6 | №7 | Тест 1 | №8 | №9 | №10 | ||||||||||||||||||||||||||||||||||
67 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 1 | 2 | 1 | 2 | 1 | 2 | 3 | 1 | 1 | Доклады | Текст | Презентация | Защита | |||||||||||||
Bzikadze Alexander | 1 | |||||||||||||||||||||||||||||||||||||||||||||
Nagaev Arthur | 1 | |||||||||||||||||||||||||||||||||||||||||||||
Андреев Кирилл | 4 | |||||||||||||||||||||||||||||||||||||||||||||
Батоев Константин | 1 | |||||||||||||||||||||||||||||||||||||||||||||
Виноградов Михаил | 1 | |||||||||||||||||||||||||||||||||||||||||||||
Маненкова Анна | 27 | |||||||||||||||||||||||||||||||||||||||||||||
Мухаммадиев Альберт | 1 | |||||||||||||||||||||||||||||||||||||||||||||
Небогатиков Иван | 1 | |||||||||||||||||||||||||||||||||||||||||||||
Чхеидзе Даниил | 30 |
Реализовать свой собственный CountdownEvent:
Может помочь класс ManualResetEvent. Пользоваться CountdownEvent из стандартной библиотеки нельзя. Многопоточные юнит-тесты обязательны (прежде всего, на гонку по значению счётчика).
Доклады:
Написать функцию, принимающую адрес веб-страницы, скачивающую все веб-страницы, на которые есть ссылки с указанной, и печатающую информацию о размере каждой в формате "адрес страницы --- число символов". Ссылки нужно обрабатывать только заданные в форме <a href="http://...">. Для поиска ссылок на странице могут быть полезны регулярные выражения (класс System.Text.RegularExpressions.Regex). Качать страницы надо параллельно.
Найти среднее арифметическое синусов всех чисел из списка с помощью хвостовой рекурсии. Конструкции императивного программирования использовать нельзя.
Найти самый большой палиндром, полученный произведением двух трёхзначных чисел. Конструкции императивного программирования использовать нельзя.
Реализовать класс "хеш-таблица", позволяющий добавить элемент, проверить принадлежность элемента таблице и удалить элемент. Хеш-функция должна передаваться хеш-таблице извне. Мутабельные переменные разрешены, пользоваться библиотечной хеш-таблицей нельзя.
Реализовать Workflow, выполняющий математические вычисления с заданной (как аргумент Builder-а) точностью. Например,
rounding 3 {
let! a = 2.0 / 12.0
let! b = 3.5
return a / b
}
должно возвращать 0.048
Реализовать Workflow, выполняющий вычисления с числами, заданными в виде строк. Например,
let result = calculate {
let! x = "1"
let! y = "2"
let z = x + y
return z
}
должно возвращать значение, содержащее 3, а
let res = calculate {
let! x = "1"
let! y = "Ъ"
let z = x + y
return z
}
должно возвращать значение, указывающее на отсутствие результата.
Переписать на F# задачу про моделирование локальной сети прошлого семестра, в возможно более F#-овом стиле. Мутабельное состояние в этой задаче использовать можно.
Оригинальное условие:
Смоделировать работу локальной сети:
Требуется периодически выводить состояние сети.
Переписать на F# задачу о двоичном дереве поиска с итератором.
Оригинальное условие:
Реализовать двоичное дерево поиска (с операциями добавления, поиска и удаления) и итератор для его обхода
Реализовать функцию, которая по произвольной строке проверяет корректность скобочной последовательности в этой строке. Скобки бывают трёх видов.
Записать в point-free стиле func x l = List.map (fun y -> y * x) l
Написать программу - телефонный справочник. Она должна уметь хранить имена и номера телефонов, в интерактивном режиме осуществлять следующие операции:
1. выйти
2. добавить запись (имя и телефон)
3. найти телефон по имени
4. найти имя по телефону
5. вывести всё текущее содержимое базы
6. сохранить текущие данные в файл
7. считать данные из файла
Реализовать интерпретатор лямбда-выражений, выполняющий бета-редукцию по нормальной стратегии (зависать на термах, не имеющих нормальной формы, вполне ок). Лямбда-выражения задаются через размеченные объединения.
Реализовать три варианта функции, подсчитывающей количество четных чисел в списке (с использованием стандартных функций map, filter, fold). Использование рекурсии не допускается.
Реализовать функцию, применяющую функцию к каждому элементу двоичного дерева и возвращающую новое двоичное дерево, каждый элемент которого --- результат применения функции к соответствующему элементу исходного дерева (map для деревьев)
Посчитать значение дерева разбора арифметического выражения, заданного через вложенные discriminated union-ы
Реализовать функцию, генерирующую бесконечную последовательность простых чисел
Ко всем задачам требуются юнит-тесты
Проверить, что все элементы списка различны
Вывести позицию в списке, на которой сумма двух соседних элементов максимальна. Например, для [1; 5; 6; 2] функция должна вернуть значение 2.
Выполнить бета-редукцию λ-терма ((λa.(λb.b b) (λb.b b)) b) ((λc.(c b)) (λa.a)). Решение (в виде последовательности преобразований) набрать в TeX-е и выложить файл .tex на GitHub. Может помочь www.papeeria.com
Докажите, что S K K = I. Доказательство набрать в TeX-е и выложить на GitHub. Делать надо самостоятельно, это известное (и несложное) упражнение, так что гуглить нечестно.
Реализовать функцию, которая вычисляет произведение цифр данного числа
Реализовать функцию, которая выдает первую позицию вхождения заданного числа в список
Реализовать функцию, проверяющую, является ли строка палиндромом
Написать mergesort: функцию, которая принимает список и возвращает отсортированный список
Посчитать факториал
Посчитать числа Фибоначчи (за линейное время)
Реализовать функцию обращения списка (за линейное время)
Реализовать функцию, которая принимает на вход n и m и возвращает список из элементов [2n; 2n + 1; ...; 2n + m]
© 2014-2019 HwProj