8000 GitHub - thimios/supermarket-challenge: A Ruby coding challenge taking place in the supermarket
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

thimios/supermarket-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

supermarket-challenge requirements

A Ruby coding challenge in the supermarket. We’ll implement the code for a checkout system that handles pricing schemes such as “apples cost 50 cents, three apples cost $1.30”.

Step 1

Let's model the various options for supermarket pricing. Some things in supermarkets have simple prices: this can of beans costs $0.65. Other things have more complex prices. For example:

  • three for a dollar (so what’s the price if I buy 4, or 5?)
  • $1.99/pound (so what does 4 ounces cost?)
  • buy two, get one free (so does the third item have a price?)

Step 2

We'll have to implement the code for a supermarket checkoutthat calculates the total price of a number of items. In a normal supermarket, things are identified using Stock Keeping Units, or SKUs. In our store, we’ll use individual letters of the alphabet ( A , B , C , ...). Our goods are priced individually. In addition, some items are multipriced: buy n of them, and they’ll cost you y cents. For example, item A might cost 50 cents individually, but this week we have a special offer: buy three A s and they’ll cost you $1.30.

Item Unit Price Special Price
A 50 3 for 130
B 30 2 for 45
C 20
D 15

Our checkout accepts items in any order, so that if we scan a B , an A , and another B , we’ll recognize the two B ’s and price them at 45 (for a total price so far of 95 ). Because the pricing changes frequently, we need to be able to pass in a set of pricing rules each time we start handling a checkout transaction.

The interface to the checkout should look like:

co = CheckOut.new(pricing_rules)
co.scan(item)
co.scan(item)
...
price = co.total
Running the solution

Bundle and run the specs:

bundle
rspec

About

A Ruby coding challenge taking place in the supermarket

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0