-
Notifications
You must be signed in to change notification settings - Fork 0
/
calculator.py
45 lines (34 loc) · 1.12 KB
/
calculator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import math
def padding(minutes):
return minutes * 10
def isMoreThanZero(minutes):
# minutes > 0 ? 1 : 0
# this function is not working with negative number
return math.ceil(minutes / (minutes + 1))
def notLessThanZero(minutes):
moreFactor = minutes / (minutes + 1)
lessFactor = minutes / abs(minutes + 1)
# minutes > 0 ? 1 : 0
# lessFactor + moreFactor For prevent negative number
return isMoreThanZero(lessFactor + moreFactor)
def isTimeMoreThanZero(minutes):
# padding for prevent minutes == -1 that cause devide by zero error
padded = padding(minutes)
return notLessThanZero(padded)
def calulate(hours, minutes):
minutes += 60 * hours
cost = 0
# 20 min free
minutes -= 20
minutes += isTimeMoreThanZero(minutes) * 20
# 1 hour 10/hours
cost += isTimeMoreThanZero(minutes) * 10
minutes -= 60
# 2 hour next 20/hours
cost += isTimeMoreThanZero(minutes) * 20
minutes -= 60
cost += isTimeMoreThanZero(minutes) * 20
minutes -= 60
# 3 hour next 40/hours
cost += isTimeMoreThanZero(minutes) * math.ceil(minutes/60) * 40
return cost