コード例 #1
0
ファイル: car.py プロジェクト: boyski33/HashCode2018
class Car:
    current_number = 1

    def __init__(self):
        self.number = Car.current_number
        Car.current_number += 1
        self.position = Position(0, 0)
        self.taken_rides_indexes = []
        self.possible_rides = []
        self.busy_until = 0

    def __str__(self):
        return "{} {}".format(len(self.taken_rides_indexes),
                              ' '.join(self.taken_rides_indexes))

    def __repr__(self):
        return self.__str__()

    def filter_possible_rides(self, rides, time_now):
        self.possible_rides = []
        for r in rides:
            if time_now + self.distance_to_ride(r) < r.latest_possible_pickup(
            ):
                self.possible_rides.append(r)

    def distance_to_ride(self, ride):
        return self.position.distance_between_positions(ride.start_position)

    def take_ride(self, ride, time_now):
        self.taken_rides_indexes.append(str(ride.index))
        self.busy_until = time_now + self.distance_to_ride(
            ride) + ride.duration()
        self.position = ride.end_position
コード例 #2
0
ファイル: ride.py プロジェクト: boyski33/HashCode2018
class Ride:
    current_index = 0

    def __init__(self, ride):
        self.index = Ride.current_index
        Ride.current_index += 1
        self.start_position = Position(ride[0], ride[1])
        self.end_position = Position(ride[2], ride[3])
        self.start_time = int(ride[4])
        self.end_time = int(ride[5])

    def __repr__(self):
        # return "{} {} {} {}".format(self.start_position, self.end_position, self.start_time, self.end_time)
        return "{}: {}".format(self.index, self.end_time)

    def duration(self):
        return self.start_position.distance_between_positions(self.end_position)

    def latest_possible_pickup(self):
        return (self.end_time - 1) - self.duration()

    def calculate_time_delta(self):
        return self.end_time - self.start_time