Çoğu ipucu hesap makinesi uygulaması sadece yemek fiyatının sabit bir yüzdesini alır. Örneğin, yemeğiniz 23,45 dolar ise,% 15 bahşiş = 3,52 dolar veya daha cömert% 20 bahşiş = 4,69 dolar bırakabilirsiniz.
Kredi kartı kullanıcıları için yeterince uygun. Ancak, nakit ipuçlarını bırakmayı tercih ederseniz, bu durumda bu tuhaf yüzde miktarları önler. O halde, nakit kullanıcıları için daha uygun olacak fikrini değiştirelim.
Senin görevin
Giriş olarak alan bir program veya işlevi olabildiğince az sayıda bayt olarak yazın :
- Yemek fiyatı
- Minimum bahşiş yüzdesi
- Maksimum uç yüzdesi
Ve gerekli olan fatura / banknot ve madeni para sayısını en aza indiren [price * min_per% / 100, price * max_per% / 100] aralığında herhangi bir ipucu miktarını çıktı alın.
ABD’nin 1 ¢, 5 ¢, 10 ¢, 25 ¢, 1, 5 $, 10 $, 20 $, 50 $ ve 100 dolar para değerlerini kabul edin.
Örnek
İşte Python'da golf oynamayan bir örnek program:
import math
import sys
# Do the math in cents so we can use integer arithmetic
DENOMINATIONS = [10000, 5000, 2000, 1000, 500, 100, 25, 10, 5, 1]
def count_bills_and_coins(amount_cents):
# Use the Greedy method, which works on this set of denominations.
result = 0
for denomination in DENOMINATIONS:
num_coins, amount_cents = divmod(amount_cents, denomination)
result += num_coins
return result
def optimize_tip(meal_price, min_tip_percent, max_tip_percent):
min_tip_cents = int(math.ceil(meal_price * min_tip_percent))
max_tip_cents = int(math.floor(meal_price * max_tip_percent))
best_tip_cents = None
best_coins = float('inf')
for tip_cents in range(min_tip_cents, max_tip_cents + 1):
num_coins = count_bills_and_coins(tip_cents)
if num_coins < best_coins:
best_tip_cents = tip_cents
best_coins = num_coins
return best_tip_cents / 100.0
# Get inputs from command-line
meal_price = float(sys.argv[1])
min_tip_percent = float(sys.argv[2])
max_tip_percent = float(sys.argv[3])
print('{:.2f}'.format(optimize_tip(meal_price, min_tip_percent, max_tip_percent)))
Bazı örnek giriş ve çıkışlar:
~$ python tipcalc.py 23.45 15 20
4.00
~$ python tipcalc.py 23.45 15 17
3.55
~$ python tipcalc.py 59.99 15 25
10.00
~$ python tipcalc.py 8.00 13 20
1.05
a program that takes as input (stdin, command-line arguments, or GUI input box, whichever is most convenient in your language)
Bu, girişler ve çıkışlar için varsayılan ayarlarımızı geçersiz kılmak için mi tasarlandı? Yani, örneğin üç sayı alan ve sonucu döndüren bir fonksiyona izin verilebilir mi?
3.51
ve3.75
ayrıca test durumu için geçerli çıktılar 23.45 15 17
mı? Aynı miktarda para kullanırlar ve aynı zamanda menzilde de bulunurlar.