TDD Boot Camp(TDDBC) - TDDBC仙台05/課題 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

!TDDBC仙台05課題:格子点

!!課題1 平面座標上の格子点 (grid point)

座標平面上にある点で、'''x座標''' (x-coordinate) 、'''y座標''' (y-coordinate) がともに整数である点を'''格子点'''と呼びます

!!!課題1−1

* '''x座標'''と'''y座標'''を与えて'''格子点'''を生成してください
* 生成した'''格子点'''から'''x座標'''と'''y座標'''を取得してください
* 生成した'''格子点'''から'''文字列表記''' (notation) を取得してください

【例】
// x座標 に 4 , y座標 に 7 を与えて 格子点 を生成
GridPoint p4_7 = new GridPoint(4, 7);
// (4,7) の x座標 は 4
int x = p4_7.getX(); // => 4
// (4,7) の y座標 は 7
int y = p4_7.getY(); // => 7
// (4,7) の 文字列表記 は "(4,7)"
String notation = p4_7.getNotation(); // => "(4,7)"

!!!課題1−2

* 2つの'''格子点'''が同じ'''座標'''(coordinates)を持つか判定してください

【例】
// (4,7) と (4,7) は同じ座標を持つ
boolean hasSameCoordinates = p4_7.hasSameCoordinatesWith(new GridPoint(4, 7)); // => true
// (4,7) と (3,8) は同じ座標を持たない
boolean hasNotSameCoordinates = p4_7.hasSameCoordinatesWith(new GridPoint(3, 8)); // => false

!!!課題2

* 2つの格子点が '''隣り合っている'''(neighbor)かを判定しよう
* (補足) 格子点(x,y)は、4つの格子点(x-1,y),(x+1,y),(x,y-1),(x,y+1)と隣り合っているものとします

【例】
// (4,7) と (3,7) は隣り合っている
boolean isNeighbor = p4_7.isNeighborOf(new GridPoint(3, 7)); // => true
// (4,7) と (3,8) は隣り合っていない
boolean isNotNeighbor = p4_7.isNeighborOf(new GridPoint(3, 8)); // => false
// (4,7) と (4,7) は隣り合っていない
boolean isNotNeighbor = p4_7.isNeighborOf(new GridPoint(4, 7)); // => false

!!!課題3

異なる座標を持つ2つの格子点を含む'''格子点集合'''(grid points)を導入します。

!!!課題3−1

* 格子点集合が、指定した格子点を'''含む'''(contains)かを判定してください

!!!課題3−2

* 格子点集合が'''連結している'''(connected)かを判定してください
* (補足) 格子点集合に含まれる2つの格子点が隣り合っている場合に限り、その格子点集合が連結しているものとします

!!!課題4

!!!課題4−1

* 格子点集合を、異なる2つまたは3つの格子点を含むことが出来るように拡張してください
* (補足) 格子点集合に含まれる任意の格子点について、その格子点から隣り合っている格子点のみを経由してその他全ての格子点へ到達できる場合に限り、その格子点集合が連結しているものとします

!!!課題4−2

* 格子点集合から、格子点集合に含まれている'''格子点の数'''(count)を取得してください

!!!課題5

!!!課題5−1

* 格子点集合を、異なる2〜4つの格子点を含むことが出来るように拡張してください

!!!課題5−2

* 格子点集合が'''一筆書きできるか'''(traversable)を判定してください
* (補足) 格子点集合に含まれるある格子点について、その格子点から隣り合っている格子点のみを経由して、最終的に全ての格子点をちょうど一度ずつ経由する組み合わせがある場合に限り、その格子点集合が一筆書きできるものとします

!!!課題6

* 格子点集合を、異なるN個の格子点(Nは2以上の整数)が扱えるように拡張してください

!!!課題7

* 格子点及び格子点集合を、3次元座標上で扱えるように拡張してください
* (補足) 2次元座標上の格子点/格子点集合と、3次元座標上の格子点/格子点集合を同時に扱える必要はありません

!!!課題8

* 格子点及び格子点集合を、N(Nは4以上の整数)次元座標上で扱えるように拡張してください
* (補足) N次元座標上の格子点/格子点集合と、N-1次元以下の座標上の格子点/格子点集合を同時に扱える必要はありません

!ライセンス
[[クリエイティブ・コモンズ・ライセンス|http://i.creativecommons.org/l/by-sa/2.1/jp/88x31.png]]
この演習問題は [[クリエイティブ・コモンズ 表示 - 継承 2.1 日本 ライセンスの下に提供されています。|http://creativecommons.org/licenses/by-sa/2.1/jp/]]