Добавил задание к 4
This commit is contained in:
1
lab4/.gitignore
vendored
Normal file
1
lab4/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!task.txt
|
||||
BIN
lab4/task.jpg
Normal file
BIN
lab4/task.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 162 KiB |
19
lab4/task.txt
Normal file
19
lab4/task.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
Практическое задание 4. Тестирование в Haskell
|
||||
№ 12
|
||||
|
||||
Создать проект в stack. Функции записать в библиотеку Lib.hs и ограничить доступ к вспомогательным функциям. Тесты записать в Spec.hs.
|
||||
|
||||
Функция 1: Напишите функцию проверки равенства по модулю isCongruent :: Int -> Int -> Int -> Bool, которая проверяет, равны ли два числа по модулю третьего числа. Используя QuickCheck, проверьте следующие свойства:
|
||||
|
||||
1. Если два числа равны по модулю, то их разность делится на модуль:
|
||||
isCongruent a b m == (modulus (a - b) m == 0).
|
||||
2. Равенство по модулю является симметричным:
|
||||
isCongruent a b m == isCongruent b a m.
|
||||
3. Если одно число равно другому, то они равны по любому модулю:
|
||||
если a == b, то isCongruent a b m == True.
|
||||
|
||||
Функция 2: Напишите функцию filterByPredicate :: (a -> Bool) -> [a] -> [a], которая фильтрует элементы списка по заданному предикату. Используя QuickCheck, проверьте следующие свойства:
|
||||
|
||||
1. Все элементы результата удовлетворяют предикату: для каждого элемента x из результата должно выполняться условие: predicate x == True.
|
||||
2. Длина результата не превышает длину исходного списка: length (filterByPredicate predicate xs) <= length xs.
|
||||
3. Если предикат всегда возвращает True, то результат совпадает с исходным списком: если predicate x == True для всех x, то filterByPredicate predicate xs == xs.
|
||||
Reference in New Issue
Block a user