Проблема говорит:
Напишите функцию, которая возвращает все подмножества с k элементами из данного набора.
Мне удалось написать код для извлечения всех подмножеств из набора:
module Int = struct
type t = int
let compare = compare
end
module IS = Set.Make(Int)
module IIS = Set.Make(IS)
let addelement e ps = IIS.fold (fun s r -> IIS.add (IS.add e s) r) ps ps;;
let powset s = IS.fold addelement s (IIS.singleton IS.empty);;
let set = IS.of_list [1;2;3];;
let r = powset set;;
List.map IS.elements (IIS.elements r);;
Теперь единственное, что мне нужно сделать, - это реализовать условие, чтобы каждое подмножество, которое мы получаем из набора, имело ровно k элементов. Как мне это сделать?