ごとけんです

In message "[ruby-list:8661] Re: Equivalence.rb"
    on 98/07/09, toyofuku / juice.or.jp <toyofuku / juice.or.jp> writes:

>  豊福@パパイヤです。
>
>ごとけんさん
>> 同値類のとっても単純なモジュールを書きました。
>
>  なんか面白そうですね。

どうもです # 必要なんで作ったんですけど ^^;;;

>> Family#[] は代表元を与えるとその同値類を Array
>> として返します。
>>   q0 = a.quotient{|i,j| i%2 == j%2}
>>       ==>[[1, 3, 5, 7, 9], [2, 4, 6, 8, 10]]
>>   q0[1]  # equivalece class for the reprezentative 1
                                       ^^^^^^^^^^^^^^
はっ! representative だ。(__;

>>       ==>[1, 3, 5, 7, 9]
>
>  q0 が配列なので q0[1] は配列の1番目と混同
>してしまいました。 q0.equivalence_class(1) 的
>書き方の方が混乱が少ないような気がします。

うーん、では、そっちを定義として alias します。

普段ぼくは、紙の上では [n] を 1 から n までの
自然数の集合の表記として使っているのですが、
n を代表元とする同値類というのもまたよくあるので
こうしました。同値類をよく使うプログラムでは、
シンプルでけっこう見やすいと今は思ってます。

Family は名前がデカ過ぎるので QuotientSet に
改名しました。あと QuotientSet#fine! という更に
細かい関係で割るのとかも追加しましたがもう少し
まとまってから流します。

-- gotoken