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?
- 点と半径を受け取り、円を返す関数