問題5−2をテストコード含めて実装．若干のアレンジ有り．