morioXのCraftお勉強日記 RSSフィード

2007-05-15

[] Designing and writing programs (15日目)  Designing and writing programs (15日目) - morioXのCraftお勉強日記 を含むブックマーク

Exercise 4.19

次の関数テストデータを考えなさい、という問題。

howManyAboveAverage :: Int -> Int -> Int -> Int

howManyAboveAverage では3つの数のうち、平均以上の値を取る数の個数を求める。

テストパターン的には以下のような感じかな。

  • 3つの数が同じ(0が返される)
  • 1つの数が平均以上、かつ、残り2つの数が等しい(1が返される)
  • 1つの数が平均以上、かつ、残り2つの数が等しくない(1が返される)
  • 2つの数が平均以上、かつ、その2つの数が等しい(2が返される)
  • 2つの数が平均以上、かつ、その2つの数が等しい(2が返される)

Exercise 4.20

2の累乗(乗数は正の整数)についてのテストデータを求めよ、とのこと。

分からない。単に計算して値を用意しておく、というのじゃダメなのか?


Summary

内容は、プログラム設計の一般原則の紹介だった。紹介されたのは以下の内容。

MarciaMarcia2012/07/24 08:01This webtsie makes things hella easy.

mlgsjzjydmlgsjzjyd2012/07/25 02:09K9JLi0 <a href="http://tqnitzsdrlxm.com/">tqnitzsdrlxm</a>

rirfvntvcarirfvntvca2012/07/26 18:56JX8HHa <a href="http://vbbxqwekucbi.com/">vbbxqwekucbi</a>

2007-05-14

[] Designing and writing programs (14日目)  Designing and writing programs (14日目) - morioXのCraftお勉強日記 を含むブックマーク

Exercise 4.16

Exercise 4.15 で使ったテストデータを使って、次の関数テストしなさい、という問題。

solution m n p = ((m + n + p) == 3 * p)

mに4、nに5、pに6を入れた場合、solution関数は満たすけど、allEqualは満たさなくなる。同じテストデータは使えない、といえる。


Exercise 4.17

次の関数ブラックボックステストデータを用意しなさい、という問題。

allDifferent :: Int -> Int -> Int -> Bool

allDifferent は、全ての入力値が異なる場合にTrueを出力する関数テストデータの考え方としては、allEqualの時と同じでよいかと。


Exercise 4.18

Exercise 4.17のテストデータで次の関数テストしなさい、という問題。

attempt m n p = (m /= n) && (n /= p)

mに5、nに4、pに5を入れた場合、attempt関数は満たすけど、allDifferentは満たさなくなる。同じテストデータは使えない、といえる。

SuzynSuzyn2012/01/06 16:04Very valid, pithy, scuncict, and on point. WD.

wukdvzisgwukdvzisg2012/01/06 20:16Jqt5AY <a href="http://qxphrpbcvhtz.com/">qxphrpbcvhtz</a>

wwmtarwdlwwmtarwdl2012/01/07 23:26kBItPT , [url=http://coyrfiqtajcg.com/]coyrfiqtajcg[/url], [link=http://nsrcfevtptld.com/]nsrcfevtptld[/link], http://uvuuiqznzkqe.com/

omntvgtpyomntvgtpy2012/01/09 22:343uKHJG <a href="http://rtyoysrqbexo.com/">rtyoysrqbexo</a>

2007-05-13

[] Designing and writing programs (13日目)  Designing and writing programs (13日目) - morioXのCraftお勉強日記 を含むブックマーク

Exercise 4.14

2の塁乗を4.3の例題とは違うアプローチの再帰を使って求める問題。

求める関数をpowerTwoとし、乗数をnとする。

あと、2乗を簡単にするためにsquare関数を定義する。

square :: Int -> Int

square n = n * n

powerTwo :: Int -> Int

powerTwo n

 | n == 1 = 2

 | (mod n 2) == 0 = square $ powerTwo $ div n 2

 | otherwise = 2 * (square $ powerTwo $ div n 2)


Exercise 4.15

3つのIntが同じであるかどうかを判定する allEqual 関数テストケースを作る、という話。

  • 3つが同じ数の場合
  • 1つめの数だけが異なる数の場合
  • 2つめの数だけが異なる数の場合
  • 3つめの数だけが異なる数の場合
  • 全てが異なる数の場合

でよいかと。

MarcoMarco2012/10/02 15:35You make tnihgs so clear. Thanks for taking the time!

gzcxvsmxthgzcxvsmxth2012/10/03 18:49ALbD1r <a href="http://dmkmveyefgki.com/">dmkmveyefgki</a>

avyycjniavyycjni2012/10/03 23:27T85GvL , [url=http://drlyrgacjhgp.com/]drlyrgacjhgp[/url], [link=http://hhvrubfxnwxt.com/]hhvrubfxnwxt[/link], http://tardrgqpfrkl.com/

yjfjfdhjdyjfjfdhjd2012/10/04 12:1580oSZs <a href="http://yaeldpivbrxr.com/">yaeldpivbrxr</a>

hdzbyyhdzbyy2012/10/04 15:40HhUuT2 , [url=http://sclijiuksamj.com/]sclijiuksamj[/url], [link=http://rduxryesndqb.com/]rduxryesndqb[/link], http://bfbcakzclqxv.com/

2007-05-11

[] Designing and writing programs (12日目)  Designing and writing programs (12日目) - morioXのCraftお勉強日記 を含むブックマーク

Exercise 4.13

最大公約数 (Highest Common Factor) を求める関数を定義する。

定義する関数をgetHcfとする。

getHcf x y

 | x > y = hcfGetter x y (x - y)

 | x < y = hcfGetter y x (y - x)

 | otherwise = x


hcfGetter n m o

 | m == o = m

 | ((o - m) > 1) = hcfGetter o m (o - m)

 | ((m - o) > 1) = hcfGetter m o (m - o)

 | otherwise = 1

ユークリッドの互除法で作成(したつもり)。

2007-05-10

[] Designing and writing programs (11日目)  Designing and writing programs (11日目) - morioXのCraftお勉強日記 を含むブックマーク

4.5 Program testing

テスト技法の話。ブラックボックステストホワイトボックステストの話が出てくる。特にブラックボックステストについてのテストデータの話が細かく書いてある。