読者です 読者をやめる 読者になる 読者になる

Screaming Loud

研究・プログラミングなど気づいたことをメモをしています

CodeKata1:スーパーマーケットの価格

情熱プログラマー(オーム社)に載っている「いますぐやろう」の項目で紹介されていたCodeKataをやってみようと思い、とりあえず和訳をしてみました。
まずは、一つ目CodeKata: Code Kata One - Supermarket Pricingを和訳してみました。



このkata(型)はDFW Practioners 会議で議題に上がったものです。
その問題はいたってシンプルな「スーパーマーケットでの最適な価格」についてです。

ビーンズの缶は0.65ドルのように、スーパーに売ってるものは単純な価格設定がされています。
しかし、複雑な価格設定になっているものもあります。
例えば、

  • 3つで1ドル(じゃあ、4つや5つ買ったときは?)
  • 1パウンドあたり1.99ドル(じゃあ、4オンスのときは?)
  • 2つ買ったら、1つタダ(じゃあ、3つ目は価格としてどうなってるの?)

このkata(型)をコードには落としません。
今回の練習は、価格設定などのスキームを柔軟に扱えるような色々な価格モデルを経験するためのものです。
また同時に、それは一般的に使える価格モデルである必要もあります。(勘定、在庫管理、注文など)
では、以下のようなテーマで考えてみてください

  • 小数になった金額が存在していますか?
  • いつ四捨五入しますか?
  • 価格決定に関する会計管理をどう行いますか?
  • コストと価格は同じクラスですか?
  • もし100缶の棚に「2つ買うと1つタダ」と書いたとき、この棚の品はいくらに設定する?

これはkata(型)を考える理想の議題ですが、気をつけてください。
しっかり考えてみると実は問題は繊細です。
選択肢を絞り尽くすのに数週間かけることをオススメします。

Goal
このkata(型)の目的は、実験的モデリングの自由な方法を練習することです。
できるだけたくさんの異なったやり方を探しましょう。
色々なトレードオフを考慮しましょう。
これらの中でベストなモデルを探すのに、どんなテクニックを使えばいいでしょう?
どうやって記録する?
どうやってモデルの有効性を示す?




追記:この問題は、「3つで1ドル」などの3つの条件について「いつ四捨五入するのか?」ということを考える。