From: gotoken@... (GOTO Kentaro) Date: 1998-07-09T19:58:33+09:00 Subject: [ruby-list:8663] Re: Equivalence.rb ごとけんです In message "[ruby-list:8661] Re: Equivalence.rb" on 98/07/09, 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