2012-04-12 9 views
-2

アイテムの価格は1ユニットあたりの価格ですが、ボリュームは であるとします。例えば、リンゴはそれぞれ$ 1.00または$ 3.00の4つです。販売時点管理API

(チェックアウトのラインで何が起こるかに似ている)製品の任意 順序 を受け入れ、その後あたりに基づいて全体のショッピングカート の正しい合計金額を返すのPOSスキャンAPIを実装単価またはボリューム価格を適用することができます。 |

商品コード:ここで

は、コードによって記載された製品であり、価格は( が全く消費税はありません)を使用します価格

A |それぞれ2.00ドルまたは7.00ドルで4ドル

B | $ 12.00

C | 6パックの場合は$ 1.25または$ 6です。

D | $ 0.15

以下の疑似コードのように見えるトップレベルのPOS端末サービスオブジェクトがあるはずです。あなたは自由に設計することができ、 の方法を含めて、 はコードの残りの部分を実装します。

terminal.setPricing(...)terminal.scan( "A")端末。 scan( "C")... などresult = terminal.total

ここでは、テストケースに使用する必要がある最小限の入力を示します。

これらの項目を次の順序でスキャンしてください:ABCDABAA;合計金額が $ 32.40であることを確認します。これらのアイテムを次の順序でスキャンします。CCCCCCC;合計 の価格が$ 7.25であることを確認します。これらのアイテムを次の順序でスキャンします:ABCD;合計 の価格が$ 15.40であることを確認します。

+0

高レベルで、あなたの提案された解決策は何ですか? – gbulmer

+0

作品を書くだけでいいですか、それがいかに速くなければならないか、どのようにしてデザインする必要があるかについての制限がありますか? – twain249

答えて

2

1)アイテムストアごとに、単価、グループ価格、およびグループあたりの単位。

2)スキャンフェーズでは、1項目あたりのユニット数を追跡​​してください。

3)各項目について、によってコストを増加:

(number units)/(units per group for item) * group price + 
(number units) % (units per group for item) * unit price 

空間の線形量がアイテムの数と走査アイテムの数を追跡するために使用される線形量の順序で使用され。ランタイムも線形です。

関連する問題