【例】
[3,8]
-> 下端点 (lower endpoint) が3, 上端点 (upper endpoint) が8 である整数閉区間
-> 3 と 8 は区間に含まれます
- 下端点と上端点を与えて閉区間を生成しよう
- 閉区間から下端点と上端点を取得しよう
- 閉区間から文字列表記を取得しよう
【例】
// [3,8] を生成
ClosedRange c3to8 = new ClosedRange(3,8);
// [3,8] の下端点は 3
int lowerEndpoint = c3to8.getLowerEndpoint(); // => 3
// [3,8] の上端点は 8
int upperEndpoint = c3to8.getUpperEndpoint(); // => 8
// [3,8] の文字列表記は "[3,8]"
String notation = c3to8.toString(); // => "[3,8]"
// [8,3] は生成出来ない
ClosedRange c8to3 = new ClosedRange(8,3); // => エラー
- 閉区間が指定した整数を含むか (contains) 判定しよう
【例】
// [3,8] は 5 を含む
c3to8.contains(5); // => true
// [3,8] は -1 を含まない
c3to8.contains(-1); // => false
- 閉区間が別の閉区間と等しいか (equals) 判定しよう
【例】
// [3,8] は [3,8] と等しい
c3to8.equals(new ClosedRange(3, 8)); // => true
// [3,8] は [1,6] と等しくない
c3to8.equals(c1to6); // => false
【例】
(3,8)
-> 下端点 (lower endpoint) が3, 上端点 (upper endpoint) が8 である開区間
-> 3 と 8 は区間に含まれない
- 下端点と上端点を与えて開区間を生成しよう
- 開区間の下端点と上端点を取得しよう
- 開区間の文字列表記を取得しよう
- 開区間が指定した整数を含むか (contains) 判定しよう
- 開区間が別の開区間と等しいか (equals) 判定しよう
左閉右開区間 (left-closed right-open range)
-> [a,b) = {x | a<=x<b}
左開右閉区間 (left-open right-closed range)
-> (a,b] = {x | a<x<=b}
(補足) [a,a) , (a,a] = Φ (空区間)
- 閉区間/開区間と同等の機能を実装しよう
- 閉区間/開区間/半開区間が等しいか (equals) 判定しよう
- 区間が別の区間と接続しているか (isConnectedTo) 判定しよう
【例】
// [3,8] は [1,6] と接続している
c3to8.isConnectedTo(c1to6); // => true
// [3,8] は [8,15] と接続している
c3to8.isConnectedTo(c8to15); // => true
// [3,8] と [9,12] は接続していない
c3to8.isConnectedTo(c9to12); // => false
- 指定した全ての整数を含むか (containsAll) 判定しよう
- 閉区間と別の閉区間との共通集合 (intersection) を取得しよう
【例】
// [3,8] は 4, 7, 3 を全て含む
c3to8.containsAll(Arrays.asList(4,7,3)); // => true
// [3,8] は 6, -1 のいずれかを含まない
c3to8.containsAll(Arrays.asList(6,-1)); // => false
// [3,8] と [4, 10] の共通集合は [4,8]
c3to8.getIntersection(c4to10); // => [4,8]
// [3,8] と [9,12] は共通集合を持たない
c3to8.getIntersection(c9to12); // => エラー
- 文字列表記を解析して (parse) 区間を生成しよう
【例】
// 文字列 "[3,8]" をパースすると閉区間 [3,8] を生成する
ClosedRange c3to8 = ClosedRange.parse("[3,8]") // => [3,8] を表すオブジェクト
以上 (at least)
-> [a,+∞) = {x | a<=x}
より大きい (greater than)
-> (a,+∞) = {x | a<x}
以下 (at most)
-> (-∞,b] = {x | x<=b}
未満 (less than)
-> (-∞,b) = {x | x<b}
整数全体 (all)
-> (-∞,+∞) = {x}
- 閉区間/開区間/半開区間と同等の機能を実装しよう
この演習問題は クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。
(C) Tsutomu YASUI / やっとむ (tsutomu.yasui at gmail.com)