Задания по FPTL / Readme
.docxСписок встроенных функций языка FPTL
Имя функции |
Сигнатура |
Описание |
id |
any *… => any * … |
Тождественная функция: f(x) = x |
[n] |
any *… => any |
Выбор n-го элемента из кортежа. |
add |
int * int => int double * double => double |
Сложение. |
sub |
Вычитание. |
|
mul |
Умножение. |
|
div |
Деление. |
|
mod |
Остаток от деления. |
|
equal |
= |
|
nequal |
!= |
|
greater |
> |
|
less |
< |
|
gequal |
>= |
|
lequal |
<= |
|
sqrt |
double => double |
Квадратный корень. |
sin |
Cинус. |
|
cos |
Косинус. |
|
tan |
Тангенс. |
|
asin |
Арксинус. |
|
atan |
Арктангенс. |
|
round |
Округление к ближайшему целому. |
|
exp |
E в степени. |
|
ln |
Натуральный логарифм. |
|
abs |
int => int double => double |
|
Pi |
=> double |
Получение числа . |
E |
=> double |
Получение числа e. |
cat |
string * string => string |
Конкатенация строк. |
search |
string *string => string * … string * string => <undefined> |
Поиск подстроки по регулярному выражению (второй аргумент) в исходной строке (первый аргумент). |
match |
Проверка соответствия по регулярному выражению. |
|
replace |
string * string * string => string |
Замена по регулярному выражению. Первый аргумент – исходная строка. Второй аргумент – регулярное выражение для поиска образца. Третий аргумент – заменяющая строка. |
length |
string => int |
Длина строки. |
getToken |
string*string => string*string |
Выделение лексемы из исходной строки (первый аргумент) по заданному регулярному выражению (второй аргумент). Возвращает выделенную лексему и оставшуюся часть строки. В качестве разделителей лексем считаются символы пробелов, табуляции, возврата и переноса строки. |
rand |
=> double |
Возвращает псевдослучайное число в интервале [0..1] |
|
any *… => |
Вывод кортежа на экран. |
printType |
any * => |
Вывод типа кортежа на экран. |
toString |
int => string double => string |
Преобразование с строку. |
toInt |
string => int double => int |
Преобразование в целое. |
toReal |
string => double Int => double |
Преобразование в вещественное число. |
readFile |
string => string |
Чтение файла в строку. Первый аргумент – путь к файлу. |
Примечания
Функции для работы со строками search и match первым параметром принимают исходную строку, вторым строку - регулярное выражение, задающее шаблон для поиска/проверки соответствия. Возвращаемым значением будет либо <undefined> если заданная подстрока не найдена или не найдено соответствие, либо список найденных соответствий.
Функция replace принимает 3 параметра: исходную строку, строку, задающую регулярное выражение для шаблона, и строку, на которую будет произведена замена. Возвращает результирующую строку.
С синтаксисом регулярных выражений можно ознакомиться здесь: http://www.cs.tut.fi/~jkorpela/perl/regexp.html
Варианты заданий
-
Реализовать алгоритм сжатия Хаффмана.
-
Реализовать алгоритм перемножения матриц. Матрицу представлять в виде списка списков.
-
Реализовать алгоритм нахождения определителя матрицы. Матрицу представлять в виде списка списков.
-
Даны числа a, b, n. Выдать список из n разных случайных чисел из отрезка [a, b].
-
Даны числа a, b, m. Реализовать алгоритм генерации взвешенного бинарного дерева из m уровней. Веса вершин должны быть случайными числами из отрезка [a, b].
-
Реализовать операции над множествами: пересечение, объединение, разность, предикат принадлежности элемента к множеству.
-
Реализовать структуру данных «ассоциативный список» и операции над ним: добавление элемента в таблицу, удаление элемента, проверка наличия элемента.
-
Реализовать алгоритм добавления элемента в бинарное дерево поиска.
-
Реализовать алгоритм удаления элемента из бинарного дерева поиска.
-
Реализовать алгоритм построения заданного списка в бинарное дерево поиска.
-
Реализовать алгоритмы обхода «сверху-вниз» и «слева-направо» произвольных деревьев.
-
Реализовать алгоритм быстрой сортировки на.
-
Реализовать алгоритм сортировки слиянием на.
-
Нахождение простых чисел Мерсена (вида 2p-1).
-
Факторизация числа (разложение на простые).
-
Определение простоты числа.
-
Реализовать 3 алгоритма интегрирования функции с заданной точностью. Проанализировать полученные результаты.
-
Реализовать алгоритм построения минимального остовного дерева для графа.
-
Реализовать алгоритм нахождения гамильтонова цикла в графе.
-
Реализовать алгоритм поиска минимального пути между двумя вершинами графа.
-
Реализовать алгоритм поиска максимальной клики в графе
-
Реализовать алгоритм нахождения гамильтонова цикла в графе
-
Реализовать алгоритм поиска минимального остовного дерева (оптимального каркаса) методом Прима.
-
Реализовать алгоритм поиска минимального остовного дерева (оптимального каркаса) методом Крускала.
Контактная информация
Электронная почта: sti0cli@gmail.com