2012-08-01から1日間の記事一覧

配列を集合に見立ててべき集合を生成する(Haskell 版)

「プログラミング Haskell」に subs という関数が書いてあった。 subs :: [a] -> [[a]] subs [] = [[]] subs (x : xs) = (subs xs) ++ map (x :) (subs xs) Haskell は神の言語か…? ちなみに一説によれば一行でも定義できるらしいのだが…。追記 : 可読性やメ…

配列を集合に見立ててべき集合を生成する(Ruby 版)

配列(Array クラスのインスタンス) set があるとして powerset = Array.new (0..2 ** set.size - 1).each do |n| subset = Array.new set.each do |i| subset << i if n & 1 == 1 n >>= 1 end powerset << subset end やっぱり Ruby いいですね ! (ステマ)

配列を集合に見立ててべき集合を生成する

// List を集合に見立ててべき集合を生成する static <T> List<List<T>> powerset(List<T> set) { List<List<T>> powerset = new ArrayList<List<T>>(); for(int i = 0; i < Math.pow(2, set.size()); i++) { List<T> subset = new ArrayList<T>(); int n = i; for(T x : set) { if((n & 1) == 1)</t></t></list<t></list<t></t></list<t></t>…