Архив‎ > ‎Весна 2014‎ > ‎

Практикум на ЭВМ (171 группа, второй семестр)

Новости

Успеваемость

Задания

ДЗ 1. Реализовать на языке F# следующие функции:
  • sum - сумма элементов списка
  • append - конкатенация двух списков
  • addToEnd - добавление элемента в конец списка
  • filter - функция принимает условие и список и возвращает список элементов удовлетворяющих условию
  • genSqr - по целому числу n вернуть список k2 не превосходящих n
ДЗ 2. (класс)
  • Найти наибольший простой делитель числа 600851475143.
  • Посчитать сумму чётных чисел Фибоначчи не превосходящих 4000000
  • Сумма цифр числа 100!
  • Посчитать количество путей на целочисленной решетке из точки (0,0) в (20,20) при допустимых ходы вправо и вниз на 1 шаг.
  • Пусть дано значение типа:
    type Expr = Const of int // целое число
              | Var of string 
    // идентификатор (переменная
              | Add of Expr * Expr
              | Sub of Expr * Expr
              | Mul of Expr * Expr
              | Div of Expr * Expr
    Задание: упростить арифметическое выражения, записанное в виде значения типа Expr, проведя следующие преобразования:
    • посчитать все операции над двумя числами
    • <выражение> + 0 = 0 + <выражение> = <выражение>
    • <выражение> * 0 = 0 * <выражение> = 0
    • <выражение> * 1 = 1 * <выражение> = <выражение>
    • <выражение> / 1 = <выражение>
    • <переменная> - <переменная> = 0
Например: (Mul (Add (Var "x") (Const 0)) (Const 1)) => Var "x"

Множества точек.
Пусть множество точек задано типом:
type Geom = NoPoint                  // пустое множество
          | Point of float * float   // точка
          | Line  of float * float   // уравнение прямой y = a*x+b
          | VerticalLine of float    // вертикальная прямая проходящая через x
          | LineSegment of (float * float) * (float * float) // отрезок
          | Intersect of Geom * Geom // пересечение двух множеств
Написать функцию, считающую все пересечения в выражении.

ДЗ 3.
  • реализовать функцию map в CPS (continuation passing style) виде
    map : ('a -> 'b) -> 'a list -> 'b list
    map'cps : ('a -> ('b-> 'c) -> 'c) -> 'a list -> ('b list -> 'd) -> 'd

    Пример печати дерева в CPS виде http://pastebin.com/AcdEx6vC
    Пример использования: map'cps printTree'cps [Empty, Node (Empty, 1, Empty), Node (Empty, 2, Empty) ] (printfn "%A")
ДЗ 4

WebCrawler'cps

Написать функцию, которая делает следующее:
По списку URL'ов, по указанным страницам выбрать те, на которых более 5 картинок (Определяется по HTML тэгу '<img src="...">'), и "вернуть" список всех уникальных URL'ов картинок из оставшихся страниц.
При реализации для скачивания страниц воспользоваться функцией getUrl из модуля WebR.fs

Чат с ботом 

Реализовать чат с роботом в виде WinForms приложения.
Робот должен уметь поддерживать сколько-то осмысленную беседу с пользователем.

ДЗ 5 ООП Мир

Описать в ОО парадигме на языке F# какой-либо "мир": взамодействующие типы (объекты, классы) со смысловой нагрузкой. 
Использовать объектное наследование: минимум три своих класса "в глубину" и минимум три - "в ширину" 
(Например, в глубину: Эукариоты -> Животные -> Хордовые )

ДЗ 6 Dictionary

Реализовать словарь со следующим интерфейсом: http://pastebin.com/jsR7xzH3

Подстраницы (1): Samples
Comments