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(0) 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)