カメヲラボ

主にプログラミングとお勉強全般について書いてます

487-3279(2)

テストケースの穴

電話番号が7桁ということは、0000000〜9999999までの1000万通りもある。しかしインプットの個数は最大10万である。ということは確率的に同じ番号が何万個も重なるというのはまずありえない。


unsigned shortで不可ということは電話番号の個数が65535個を超えてしまうわけだから、かなり偏りのあるテストデータを作成しているということだろう。もし自分がテストケースを作るとしたら、面倒なので乱数を使う。意図的に重複する個数を増やしたければ乱数の範囲を狭くすれば良いが、面倒だ。


それから、インプットの個数はどうだろうか。問題中に『最大100000』と書くくらいだ。テストデータを作成するプログラムを書くのに、「じゃあインプットの個数は83764個にしとくかな」とはあまり思わない。そんなこと考えるのは面倒なのだ。せいぜい、10000とか50000とか単純な数にする。


さらに前回も書いたが、この問題は計算結果を出すのにかなりの時間がかかっている。


などと考えながら、私は一つの仮説を立てた。


①ほとんどのケースは乱数でデータを作る。
②インプットの個数はほとんどのケースで100000なのではないか
③100000でないものは、サンプルに出ているようなかなり少ないものだろう。


もしこれが正しいのなら、テストケースの穴を突くコードがあるはずだ。


つづく