返回首页 - Notes - 2017

点餐费用计算小程序


源代码

#!/usr/bin/env ruby

# 点餐费用计算小程序
# 第一个参数传总费用
# 后续参数传每个人的原价

def calc(sum, list)
  list = list.sort.map { |item| [item, item * sum / list.sum] }

  puts '-' * 40
  puts "本次点餐总人数:#{list.size}"
  puts "本次点餐总费用:#{sum.to_f}"
  puts '-' * 40

  pay_sum1, pay_sum2, pay_sum3 = 0.0, 0.0, 0.0
  list.each do |item|
    suggest_pay1 = item[1].ceil(1)
    suggest_pay2 = item[1].ceil(0)
    suggest_pay3 = item[1].floor(0)

    pay_sum1 += suggest_pay1
    pay_sum2 += suggest_pay2
    pay_sum3 += suggest_pay3

    puts '原价:%.2f  应付:%.2f  建议付款:%.1f  土豪通道:%.0f  欠打模式:%.0f' %
      [item[0], item[1], suggest_pay1, suggest_pay2, suggest_pay3]
  end

  puts '-' * 40
  puts '普通情况,包租公得钱:%.2f,挣小费:%.2f' % [pay_sum1, pay_sum1 - sum]
  puts '土豪通道,包租公得钱:%.2f,挣小费:%.2f' % [pay_sum2, pay_sum2 - sum]
  puts '欠打模式,包租公得钱:%.2f,亏成本:%.2f' % [pay_sum3, sum - pay_sum3]
  puts '-' * 40
end

calc(ARGV.shift.to_f, ARGV.map(&:to_f))

使用方法

  1. chmod a+x order_calc
  2. ./order_calc 总费用 原价1 原价2 原价3 ...

date:2017-01-04、2017-01-05