Parenist養成ゼミ: 演習課題4
この記事は、Parenist養成ゼミシリーズの記事である。
今回は二次元ユークリッド空間を題材に出題した。
課題
以下の課題を解け。ただし、参照透過性のある関数を実装する際にはテストも実装すること。
二次元ユークリッド空間上の点を表すデータ構造を考案し、以下の関数を作成せよ。
- 二つの数を受け取り、点を返す関数
coods->point - 点を受け取り、点を成す座標のlistを返す関数
point->coods
- 二つの数を受け取り、点を返す関数
二次元ユークリッド空間上の線分を表すデータ構造を考案し、以下の関数を作成せよ。
- 二つの点を受け取り、線分を返す関数
points->line - 線分を受け取り、線分を成す点をlistで返す関数
line->points - 線分を受け取り、長さを返す関数
line-length - 線分を受け取り、傾きを返す関数
line-slope - 線分を二つ受け取り、直行するか判定する関数
orthogonal-lines?
- 二つの点を受け取り、線分を返す関数
二次元ユークリッド空間上の三角形を表すデータ構造を考案し、以下の関数を作成せよ。
- 三つの点を受け取り、三角形を返す関数
points->triangle - 三つの線分を受け取り、三角形を返す関数
lines->triangle。ただし、三角形を成さない場合はnilを返すこと。 - 三角形を受け取り、三角形を成す点をlistでを返す関数
triangle->points - 三角形を受け取り、三角形を成す線分をlistでを返す関数
triangle->lines - 三角形を受け取り、面積を返す関数
triangle->area - 三角形を受け取り、直角三角形か判定する関数
right-triangle?
- 三つの点を受け取り、三角形を返す関数
二次元ユークリッド空間上の円を表すデータ構造を考案し、以下の関数を作成せよ。
- 点と半径を受け取り、円を返す関数
circle - 円を受け取り、中心を返す関数
circle->center - 円を受け取り、半径を返す関数
circle->radius - 円と点を受け取り、点が円の内部にあるか判定する関数
in-circle?
- 点と半径を受け取り、円を返す関数