Range の論理積

0
igaiga @igaiga555

RubyでRangeオブジェクトAとBがあったときに、A と B の論理積ってとる方法ないかな?1..3 と 2..4 で 2..3 がとれるみたいな。

2015-12-11 08:52:12
Aki Tsukada 🌤️ Japan @akitsukada

@igaiga555 とりあえず計算効率度外視すると A.to_a & B.to_a とかですかね??

2015-12-11 08:57:22
igaiga @igaiga555

@a_matsuda undefined method `&' for Range なんですよね… なんか&を定義できない理由があるのかな..

2015-12-11 09:11:03
Shugo Maeda @shugomaeda

@igaiga555 @n0kada 範囲が重ならないときに何を返すか悩ましいような

2015-12-11 16:24:35
Shugo Maeda @shugomaeda

@igaiga555 @n0kada 範囲が重ならないときに何を返すか悩ましいような

2015-12-11 16:24:35
usa @unak

@shugomaeda @igaiga555 @n0kada 空のRangeオブジェクト……はないので、nil ですかねえ?

2015-12-11 16:25:34
Shugo Maeda @shugomaeda

@unak @igaiga555 @n0kada Array#&は空配列返すので、ちょっと気持ち悪いですね。返り値に&.使えばあまり困らない気もしつつ

2015-12-11 16:27:35
Shugo Maeda @shugomaeda

@unak @igaiga555 @n0kada Array#&は空配列返すので、ちょっと気持ち悪いですね。返り値に&.使えばあまり困らない気もしつつ

2015-12-11 16:27:35
usa @unak

@shugomaeda @n0kada @igaiga555 ちゃんと空の範囲オブジェクトというものを導入すべきですよ、やはり。

2015-12-11 16:29:51
( Φ _⊞) @n0kada

@shugomaeda @igaiga555 @unak class Range; def &(r)[begin, r.begin].max..[end, r.end].min;end;end

2015-12-11 16:30:36
Shugo Maeda @shugomaeda

@unak @n0kada @igaiga555 そもそも空の範囲って何なんですかね

2015-12-11 16:32:11
Shugo Maeda @shugomaeda

@unak @n0kada @igaiga555 そもそも空の範囲って何なんですかね

2015-12-11 16:32:11
yancya @yancya

@igaiga555 ruby -e 'class Range; def &(other); other.first..last end; end; p((1..10) & (5..20)); p((1..10) & (11..20))' 重ならない時がキモいっすねw

2015-12-11 16:34:42
yancya @yancya

@igaiga555 ruby -e 'class Range; def &(other); other.first..last end; end; p((1..10) & (5..20)); p((1..10) & (11..20))' 重ならない時がキモいっすねw

2015-12-11 16:34:42
usa @unak

・nilでいいじゃん派 ・空範囲オブジェクトを用意すべき派 ・重なってない、テキトーな範囲オブジェクトに見えるものを返せばいいじゃん派

2015-12-11 16:36:14
usa @unak

3つ目を選ぶくらいならnilを選ぶわ。

2015-12-11 16:36:49
斎藤ただし, Tadashi Saito @_tad_

空の範囲オブジェクト? `()` ですよね? > 評価するとnil <

2015-12-11 16:37:57