-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchange.hs
More file actions
18 lines (15 loc) · 1.06 KB
/
change.hs
File metadata and controls
18 lines (15 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{-
Пусть есть список положительных достоинств монет coins, отсортированный по возрастанию.
Воспользовавшись механизмом генераторов списков, напишите функцию change, которая разбивает
переданную ей положительную сумму денег на монеты достоинств из списка coins всеми возможными способами.
Например, если coins = [2, 3, 7]:
GHCi> change 7
[[2,2,3],[2,3,2],[3,2,2],[7]]
Примечание. Порядок монет в каждом разбиении имеет значение,
то есть наборы [2,2,3] и [2,3,2] — различаются.
Список coins определять не надо.
Напишите программу. Тестируется через stdin → stdout
-}
change :: (Ord a, Num a) => a -> [[a]]
change 0 = [[]]
change amount = [x : rest | x <- coins, x <= amount, rest <- change (amount - x)]