Показать сообщение отдельно
  #6  
Старый 20.04.2015, 22:18
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
let solve s n m = (take n $ enumFrom 1) >>= \x -> (filter (\y -> ((length $ nub y) == x) && (sum y == s)) $ replicateM x m)

Prelude Data.List Control.Monad> solve 33 5 [1,2,5,6,10,15,20]

Результат:
Код:
[[1,2,10,20],[1,2,20,10],[1,10,2,20],[1,10,20,2],[1,20,2,10],[1,20,10,2],[2,1,10,20],[2,1,20,10],[2,5,6,20],[2,5,20,6],[2,6,5,20],[2,6,10,15],[2,6,15,10],[2,6,20,5],[2,10,1,20],[2,10,6,15],[2,10,15,6],[2,10,20,1],[2,15,6,10],[2,15,10,6],[2,20,1,10],[2,20,5,6],[2,20,6,5],[2,20,10,1],[5,2,6,20],[5,2,2
0,6],[5,6,2,20],[5,6,20,2],[5,20,2,6],[5,20,6,2],[6,2,5,20],[6,2,10,15],[6,2,15,10],[6,2,20,5],[6,5,2,20],[6,5,20,2],[6,10,2,15],[6,10,15,2],[6,15,2,10],[6,15,10,2],[6,20,2,5],[6,20,5,2],[10,1,2,20],[10,1,20,2],[10,2,1,20],[10,2,6,15],[10,2,15,6],[10,2,20,1],[10,6,2,15],[10,6,15,2],[10,15,2,6],[10,1
5,6,2],[10,20,1,2],[10,20,2,1],[15,2,6,10],[15,2,10,6],[15,6,2,10],[15,6,10,2],[15,10,2,6],[15,10,6,2],[20,1,2,10],[20,1,10,2],[20,2,1,10],[20,2,5,6],[20,2,6,5],[20,2,10,1],[20,5,2,6],[20,5,6,2],[20,6,2,5],[20,6,5,2],[20,10,1,2],[20,10,2,1],[1,2,5,10,15],[1,2,5,15,10],[1,2,10,5,15],[1,2,10,15,5],[1,
2,15,5,10],[1,2,15,10,5],[1,5,2,10,15],[1,5,2,15,10],[1,5,10,2,15],[1,5,10,15,2],[1,5,15,2,10],[1,5,15,10,2],[1,10,2,5,15],[1,10,2,15,5],[1,10,5,2,15],[1,10,5,15,2],[1,10,15,2,5],[1,10,15,5,2],[1,15,2,5,10],[1,15,2,10,5],[1,15,5,2,10],[1,15,5,10,2],[1,15,10,2,5],[1,15,10,5,2],[2,1,5,10,15],[2,1,5,15
,10],[2,1,10,5,15],[2,1,10,15,5],[2,1,15,5,10],[2,1,15,10,5],[2,5,1,10,15],[2,5,1,15,10],[2,5,10,1,15],[2,5,10,15,1],[2,5,15,1,10],[2,5,15,10,1],[2,10,1,5,15],[2,10,1,15,5],[2,10,5,1,15],[2,10,5,15,1],[2,10,15,1,5],[2,10,15,5,1],[2,15,1,5,10],[2,15,1,10,5],[2,15,5,1,10],[2,15,5,10,1],[2,15,10,1,5],[
2,15,10,5,1],[5,1,2,10,15],[5,1,2,15,10],[5,1,10,2,15],[5,1,10,15,2],[5,1,15,2,10],[5,1,15,10,2],[5,2,1,10,15],[5,2,1,15,10],[5,2,10,1,15],[5,2,10,15,1],[5,2,15,1,10],[5,2,15,10,1],[5,10,1,2,15],[5,10,1,15,2],[5,10,2,1,15],[5,10,2,15,1],[5,10,15,1,2],[5,10,15,2,1],[5,15,1,2,10],[5,15,1,10,2],[5,15,2
,1,10],[5,15,2,10,1],[5,15,10,1,2],[5,15,10,2,1],[10,1,2,5,15],[10,1,2,15,5],[10,1,5,2,15],[10,1,5,15,2],[10,1,15,2,5],[10,1,15,5,2],[10,2,1,5,15],[10,2,1,15,5],[10,2,5,1,15],[10,2,5,15,1],[10,2,15,1,5],[10,2,15,5,1],[10,5,1,2,15],[10,5,1,15,2],[10,5,2,1,15],[10,5,2,15,1],[10,5,15,1,2],[10,5,15,2,1]
,[10,15,1,2,5],[10,15,1,5,2],[10,15,2,1,5],[10,15,2,5,1],[10,15,5,1,2],[10,15,5,2,1],[15,1,2,5,10],[15,1,2,10,5],[15,1,5,2,10],[15,1,5,10,2],[15,1,10,2,5],[15,1,10,5,2],[15,2,1,5,10],[15,2,1,10,5],[15,2,5,1,10],[15,2,5,10,1],[15,2,10,1,5],[15,2,10,5,1],[15,5,1,2,10],[15,5,1,10,2],[15,5,2,1,10],[15,5
,2,10,1],[15,5,10,1,2],[15,5,10,2,1],[15,10,1,2,5],[15,10,1,5,2],[15,10,2,1,5],[15,10,2,5,1],[15,10,5,1,2],[15,10,5,2,1]]
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием