Currency

struct Item {
    name, price, quant
}
 
var check = %q{
    Hamburger   5.50    4000000000000000
    Milkshake   2.86    2
}.lines.grep(/\S/).map { Item(.words...) }
 
var tax_rate = 0.0765
var fmt = "%-10s %8s %18s %22s\n"
 
printf(fmt, %w(Item Price Quantity Extension)...)
 
var subtotal = check.map { |item|
    var extension = Num(item.price)*Num(item.quant)
    printf(fmt, item.name, item.price, item.quant, extension.round(-2))
    extension
}.sum
 
printf(fmt, '', '', '', '-----------------')
printf(fmt, '', '', 'Subtotal ', subtotal)
 
var tax = (subtotal * tax_rate -> round(-2))
printf(fmt, '', '', 'Tax ', tax)
 
var total = subtotal+tax
printf(fmt, '', '', 'Total ', total)

Output:

Last updated

Was this helpful?