Создан заказ №3808726
1 апреля 2019
Haskell
Как заказчик описал требования к работе:
Создайте программу, которая будет выполнять функции расчета сдачи по заданному номиналу и количеству монет.
Набор имеющихся монет можно представить списком: [1, 1, 5, 5, 5, 10, 10]. Имея их можно заплатить 16 р., но нельзя заплатить 18 р. Представим, что продавец так же имеет монеты. Например: [1, 1
, 1, 5]. Тогда 18 р. можно заплатить, отдав 20 р. и получив сдачу 2 р. Функции должны будут определить, может ли покупатель заплатить продавцу заданную сумму со сдачей или без.
Определите функцию subsets :: [a] -> [[a]], которая генерирует все подмножества элементов заданного списка.
Определите функцию amounts :: [Int] -> [Int], которая по набору имеющихся монет может определить все суммы, которые можно заплатить без сдачи.
Определите функцию withChange :: [Int] -> [Int] -> [Int], которая по наборам монет продавца и покупателя может определить все суммы, которые можно заплатить со сдачей. Список сумм не должен содержать отрицательных чисел.
Функция subsets неэффективна, поскольку не принимает во внимание тот факт, что в наборе могут быть монеты одного достоинства. Например: subsets [1, 1] == [[1], [1], [1,1]], где два подмножества относятся к разным монетам одинакового достоинства 1 р. Поскольку нам все равно, какими именно монетами платить, не нужно рассматривать эти подмножества отдельно.
Для улучшения эффективности можно работать с мультимножествами (хранить номинал и количество монет), тогда множество [1, 1, 5, 5, 5, 10, 10] представляется в виде [(1, 2), (5, 3), (10, 2)].
Определите функцию bag :: Eq a => [a] -> [(a, Int)], которая преобразует список в мультимножество.
Определите функцию set :: Eq a => [(a, Int)] -> [a], которая преобразует мультимножество в список.
Определите функцию subBags :: [(a, Int)] -> [[(a, Int)]], которая генерирует все подмультимножества элементов заданного мультимножества. Например:subBags [(1, 2)] == [[], [(1, 1)], [(1, 2)]]
Переопределите функции amounts и withChange для работы с мультимножествами.
Предусмотрите возможность хранения монет продавца и покупателя в файлах, а так же обеспечьте работу с программой в интерактивном режиме.
подробнее
Заказчик
заплатил
заплатил
200 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
2 апреля 2019
Заказ завершен, заказчик получил финальный файл с работой

5

Haskell .jpg
2019-04-05 15:30
Последний отзыв студента о бирже Автор24
Общая оценка
5

Положительно
Выполнил работу качественно и в короткие сроки, сделал много комментариев по коду, чтобы все было понятно. Спасибо!