TDDBC仙台05/課題

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次元以下の座標上の格子点/格子点集合を同時に扱える必要はありません
Last modified:2015/11/20 00:22:37
Keyword(s):
References:[TDDBC]