TDDBC for C++のお題で素振り(その1)
これの素振りのために作ったらしい、お題1〜3までの落書きを退避メモ。
実装はまた今度。
お題1
- 【情報】駅間のつながりはEdgeで表されている
- 【情報】双方向につながっているEdgeらしい
- 【疑問】駅は名前のみ与えられている?
- 【疑問】双方向につながっていることをどう表現する?
- 【案】現状は駅名のみ与えられているようなので、駅は文字列で表現(3.疑問より)
- データが増えた場合、オブジェクトへの変更を検討
- 【案】当該駅とEdgeでつながっている一つ隣り駅を保持するEdgeで当該駅から隣り駅へ行けることを表現する。逆向きにいけるかどうかは保証しない(4.疑問および5.案より)
- つまり、当該駅と隣り駅に関する単方向Edgeを、関係を逆にして2つ用意することで双方向に移動可能なことを表現する
- 【情報】Edgeが存在しない駅間がある
- 【案】Edgeが存在しないことをEmptyと表現したほうがよさそう(6.情報より)
- 【情報】Edgeは複数存在する
- 【案】Edgeを記録しているコンテナが必要(9.情報より)
- 【案】駅がつながっているか調べるには駅名とEdgeデータ群を利用すればいい気がする
お題2〜3
- 【情報】出発駅〜目的駅間には途中駅が存在するかもしれない
- 【情報】先ほどデータ構造Edgeを駅と駅を持つオブジェクトもしくはEmptyなと定義した
- 【疑問】Edgeが存在する場合のデータ構造を変更するべきか?
- 【案】当該駅とつながっている駅リストを保持するEdgeにする(3.疑問より)
- 【案】データ構造はそのままにフィルターかけて再帰で検索する(3.疑問より)
- 【疑問】探索済駅と未探索駅をどう区別する?
- 【案】済リストと未探索リストを用意する(6.疑問より)
- 【案】Edgeリストに探索済フラグを付与する(6.疑問より)
- 【案】プロトタイプ関数を作成して、どの方針が良さそうか試してみる(7,8.案より)
- 内部ロジックの問題なのであとでどうにかなるはず
ざっくばらんに書き殴っている。なお、これはTODOではないのであしからず。