冪集合:問題2.32
ここもlistやtupleではえらい苦労した部分。
今やすっきり。
-----
typedef
List Set;
typedef
List SetList;
const
SetList subsets(const Set& s)
{
if(isNull(s)){return(makeList(makeList()));}
const SetList rest(subsets(cdr(s)));
const function<SetList(Set)>
addCar2SetList=
[s](const Set&
x){return(cons(car(s),x));};
return(append(rest,mapping(addCar2SetList,rest)));
}
int
main(int argc, char** argv)
{
const auto list1(makeList(1,2,3));
cout<<"x =
"<<listString(list1)<<endl;
const auto subsetList(subsets(list1));
cout<<"2^x =
"<<listString(subsetList)<<endl;
return(0);
}
----
出力
----
x
= (1 2 3)
2^x
= (() (3) (2) (2 3) (1) (1 3) (1 2) (1 2 3))
0 件のコメント :
コメントを投稿