[#37041] [ANN] Exerb/Exerb-CC 2.6.0 — Yuya Kato <yuya-ml@4th.to>

未踏ユース終了まで1ヶ月を切って、焦り気味のYuyaです。

27 messages 2003/02/02
[#37202] Re: [ANN] Exerb/Exerb-CC 2.6.0 — "TOYOFUKU Chikanobu" <toyofuku@...> 2003/03/02

豊福です。

[#37206] Re: [ANN] Exerb/Exerb-CC 2.6.0 — Yuya Kato <yuya-ml@4th.to> 2003/03/04

Yuyaです。

[#37058] Re: Local variables & blocks — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

27 messages 2003/02/05
[#37059] Re: Local variables & blocks — ichimal@... 2003/02/06

皆様、初めまして鈴木です。

[#37063] Re: Local variables & blocks — matz@... (Yukihiro Matsumoto) 2003/02/07

まつもと ゆきひろです

[#37110] Re: Local variables & blocks — ichimal@... 2003/02/16

鈴木です。

[#37115] Re: Local variables & blocks — Tanaka Akira <akr@...17n.org> 2003/02/17

In article <200302161629.h1GGTvJ5008901@fenix.ne.jp>,

[#37123] 私はこれにハマリました。 — Shin-ichiro HARA <sinara@...> 2003/02/18

原です。

[ruby-list:37114] 配列とべき集合

From: Masahiro Sato <msato@...>
Date: 2003-02-17 11:20:34 UTC
List: ruby-list #37114
佐藤と申します。

配列からべき集合をつくるメソッドがないかと検索したら、
ruby-talkにはあったのですが日本語のほうには
なかったのでこちらに投稿(?)しておこうと思います。

[ruby-talk:15903] Re: Subsets of a set

を参考に個人的にいじりました。

#! /usr/bin/env ruby

class Array
  def all_subsets(size)
    if size==0 
      return [[]]
    else    
      prev = all_subsets(size-1)
      res = []
      prev.each do |s|
        self.each do |elem|
          if not s.member?(elem)
            res << s + [elem]
          end
        end
      end     
      res.each do |i| # ここのがないと重複した要素ができてしまう
        i.sort! 
      end     
      return res.uniq
    end
  end

  def power
    a = []  
    for i in 0..(self.length)
      a += self.all_subsets(i)
    end
    a
  end
end

a = [1,2,3] 
p a.all_subsets(2) # => [[1, 2], [1, 3], [2, 3]]
p a.power # => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]

いちおう正しく動くと思いますが、
もっといいアルゴリズムがあるのではないかと思います。
そういうのがあったら、もしくは既存のメソッドがあれば
教えてください。

あとall_subsetsのようなのはよく使うと思うので
標準のメソッドでもいいのではないかと思います。

p a.power.power

のような使いかたもできますが、出力量が多すぎるので
正しい結果なのかチェックしていないです。

それでは

In This Thread

Prev Next