bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

Haskell ドリル2 関数

1.概略

前回の記事では、変数に数を与えて計算していたが、同じものを扱うときでも、いちいち、変数に数を与えて計算するのでは面倒くさい。そこで、ここでは、Haskellの一つの特徴である関数を利用し、関数の変数に値を与えれば、計算をしてくれるようにする。

2.例題

問題:3つの数を加える関数sum3 x y zを作成しなさい。
sum3は、 x, y, zを加えればよいので、sum3 x y z= x + y + zとすればよい。sum3 5 6 7 とすると18が得られる。この様子を示したのが、下図である。
f:id:bitterharvest:20141209103301p:plain

3.問題

問題1:3つの数を掛け合わせた関数multiply3 x y zを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題2:2つの数の二乗を足し合わせた関数square2 x yを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題3:3つの数を足し合わせ、その合計の二乗を得る関数square3 x y zを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題4:三角形の底辺をa、高さをhとしたとき三角形の面積を求める関数triangle a hを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題5:円の半径をrとしたとき円周を求める関数circumference rを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題6:正六角形の一片の長さをaとしたとき、その面積を求める関数hexagon aを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題7:利率rの複利の定期預金にa円預金したとする。b年後の現在高を計算する関数amount r a bを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題8:直線の道に街路樹が等間隔にa本植えられている。また、最初の木から最後の木までの距離はbである。隣り合う木の間隔を求める関数distance a bを作成しなさい。また、変数に値を与えて、正しく動いていることを確認しなさい。

問題9:二人の人が同じ方向に向かって歩いている。現在、時速aキロメートルで歩いている一方の人は時速bキロメートルで歩いている他方の人のcキロメートル先にいる。t時間後の二人の距離を求める関数distance1 a b c tを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。

問題10:二人の人が対面の方向に向かって歩いている。現在、時速aキロメートルで歩いている一方の人と時速bキロメートルで歩いている他方の人との距離はcキロメートルである。t時間後の二人の距離を求める関数distance2 a b c tを作成しなさい。また、変数に値を与えて、正しく動くことを確認しなさい。