Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randint
- class Singleton :
- Instance = None
- __isInstanced = False
- def __init__(self) :
- if Singleton.__isInstanced :
- raise Exception("Instance already exists")
- Singleton.Instance = self
- Singleton.__isInstanced = True
- def __del__(self) :
- Singleton.Instance = None
- Singleton.__isInstanced = False
- class Math :
- def clamp(num, min_value, max_value):
- return max(min(num, max_value), min_value)
- class Car :
- def __init__(self, name, max_speed, drag_coef, time_to_max) :
- self.name = name
- self.max_speed = max(0, max_speed)
- self.drag_coef = Math.clamp(drag_coef, float(0), float(1))
- self.time_to_max = max(0, time_to_max)
- def printInfo(self) :
- print("Name : " + self.name, end = ", ")
- print("Max Speed : " + str(self.max_speed), end = ", ")
- print("Drag Coef : " + str(self.drag_coef), end = ", ")
- print("Time To Max : " + str(self.time_to_max))
- class Weather :
- def __init__(self, wind_speed) :
- self.wind_speed = max(0, wind_speed)
- class Competition (Singleton) :
- def __init__(self, distance, weather) :
- super().__init__()
- self.setData(distance, weather)
- def setData(self, distance, weather) :
- self.distance = distance
- self.weather = weather
- def start(self, *competitors) :
- for car in competitors:
- competitor_time = 0
- competitor_speed = 0
- for distance in range(self.distance):
- _wind_speed = randint(0, self.weather.wind_speed)
- if competitor_time == 0 :
- competitor_speed = 1
- else :
- competitor_speed = (competitor_time / car.time_to_max) * car.max_speed
- if competitor_speed > self.weather.wind_speed:
- competitor_speed -= (car.drag_coef * _wind_speed)
- competitor_time += float(1) / competitor_speed
- print("Car <%s> result: %f" % (car.name, competitor_time))
- def __del__(self) :
- super().__del__()
- ferrary = Car('ferrary', 340, 0.324,26)
- bugatti = Car('bugatti', 407, 0.39, 32)
- toyota = Car('toyota', 180, 0.25, 40)
- lada = Car('lada', 180, 0.32, 56)
- sx4 = Car('sx4', 180, 0.33, 44)
- weather = Weather(20)
- comp = Competition(10000, weather)
- comp.start(ferrary, bugatti, toyota, lada, sx4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement