[#44725] Set[Set[1]]==Set[Set[1]] は偽? — "5.5" <5.5@...>

5.5 です。

22 messages 2008/03/04

[#44782] $stdin.rewind が exec した子プロセスに伝わらない? — SATOH Fumiyasu <fumiyas@...>

さとうふみやす @ OSS テクノロジです。

11 messages 2008/03/17
[#44783] Re: $stdin.rewind が exec した子プロセスに伝わらない? — Kazuhiro NISHIYAMA <zn@...> 2008/03/17

西山和広です。

[ruby-list:44746] Re: Set[Set[1]]==Set[Set[1]] は偽?

From: "Ohto, Yasunori" <Yasunori.Ohto@...>
Date: 2008-03-07 08:32:56 UTC
List: ruby-list #44746
大戸です。

Tietew さんがご指摘されている実装方法の方がスマートですね。
私の方は回りくどい感じです... ^_^;

確かに部分集合を見ているだけでした。
間違いを修正するために二行加えました。

  def ==(set)
    set.is_a?(SuperSet) or return false
    set.size==size or return false
    set.each{ |i| include?(i) or return false }
    return true
  end


-----Original Message-----
From: 5.5 [mailto:5.5@moji.gr.jp] 
Sent: Friday, March 07, 2008 7:49 AM
To: ruby mailing list
Subject: [ruby-list:44744] Re: Set[Set[1]]==Set[Set[1]] は偽?

5.5 です。

> 大戸です。
> 
> メールに指摘されている部分が実現できるように実装してみました ^_^;
> classify その他のメソッドは実現していません m_ _m

ありがとうございました。あとでじっくり見てみます。

いまちょっと気づいたのですが,

>   def ==(set)
>     set.each{ |i| include?(i) or return false }
>     return true
>   end

これだと部分集合かどうかの判定をしているみたいです。

> Set を使う用途としては一階層の場合が多いように思います。

そうかもしれません。
ただ,Set#classify や Set#divide が集合の集合を返すので,
二階層の集合を使うことも想定したライブラリだと思えます。
この現象に気づいたのも,Set#divide の返り値を他と比較し
ようとしてでした。

ぐぐってみたら rubyneko さんのブログで↓こんなエントリー
が。
http://ujihisa.nowa.jp/entry/9207de0196

--
5.5@moji.gr.jp






In This Thread