2012-04-12 8 views
-2

Betrachten Sie ein Geschäft, wo Artikel Preise pro Stück haben, sondern auch Volumen Preise. Zum Beispiel, Äpfel können $ 1.00 oder 4 für $ 3.00 sein.Point-of-Sale-Scannen API

Implementieren Sie ein Point-of-Sale-Scanning-API, die eine beliebige Bestellung von Produkten (auf ähnliche, was an einer Kasse Linie passieren würde) akzeptiert und gibt dann den richtigen Gesamtpreis für einen gesamten Warenkorb auf dem pro basierend Stückpreise oder die Volumenpreise wie anwendbar.

Hier sind die von Code aufgeführten Produkte und die Preise zu verwenden (es gibt keine Umsatzsteuer):

Produktcode | Preis

A | $ 2,00 pro Stück oder 4 Stück für $ 7,00

B | $ 12,00

C | $ 1,25 oder $ 6 für ein Sixpack

D | $ 0,15

Es sollte eine Top-Level-Point-of-Sale-Terminal Service-Objekt, das aussieht wie der Pseudocode unten aussieht. Sie sind frei zu entwerfen und den Rest des Codes implementieren jedoch wünschen Sie, einschließlich, wie Sie die Preise im System angeben :

terminal.setPricing (...) terminal.scan („A“) -Anschluss. scan ("C") ... usw. Ergebnis = terminal.total

Hier sind die minimalen Eingaben, die Sie für Ihre Testfälle verwenden sollten. Diese Testfälle müssen in Ihrem Programm angezeigt werden:

Scannen Sie diese Artikel in dieser Reihenfolge: ABCDABAA; Überprüfen Sie, dass der Gesamtpreis 32,40 $ ist. Scannen Sie diese Artikel in dieser Reihenfolge: CCCCCCC; Überprüfen Sie, ob der Gesamtpreis 7,25 US-Dollar beträgt. Scanne diese Gegenstände in dieser Reihenfolge: ABCD; Stellen Sie sicher, dass der Gesamtpreis 0,20 € ( ) 15,40 € beträgt.

+0

Auf einer hohen Ebene, was war Ihre vorgeschlagene Lösung? – gbulmer

+0

Müssen Sie nur etwas schreiben, das funktioniert, gibt es Einschränkungen, wie schnell es sein muss oder wie es gestaltet werden muss? – twain249

Antwort

2

1) Für jeden Artikel den Einheitspreis, den Gruppenpreis und die Einheiten pro Gruppe speichern.

2) Während der Scan-Phase einfach die Anzahl der Einheiten pro Element verfolgen.

3) Für jedes Element, inkrementiert die Kosten von:

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

Lineares Menge an Platz auf der Reihenfolge der Anzahl der Elemente verwendet wird und eine lineare Menge verwendet, um die Zählungen der Elemente abzutastenden Spur . Die Laufzeit ist ebenfalls linear.