5df3bb4e40
Since I did not pass my one-site interview with DM, but I have been invited to attempt again, I decided to partition this directory into two parts: 1. part_one: Hosting the exercises that I completed before my first attempt at earning the job. 2. part_two: Hosting the exercise that I will complete before my second attempt at earning the job.
51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
import unittest
|
|
|
|
|
|
def can_two_movies_fill_flight(xs, t):
|
|
seeking = set()
|
|
for x in xs:
|
|
if x in seeking:
|
|
return True
|
|
else:
|
|
seeking.add(t - x)
|
|
return False
|
|
|
|
|
|
# Tests
|
|
|
|
|
|
class Test(unittest.TestCase):
|
|
def test_short_flight(self):
|
|
result = can_two_movies_fill_flight([2, 4], 1)
|
|
self.assertFalse(result)
|
|
|
|
def test_long_flight(self):
|
|
result = can_two_movies_fill_flight([2, 4], 6)
|
|
self.assertTrue(result)
|
|
|
|
def test_one_movie_half_flight_length(self):
|
|
result = can_two_movies_fill_flight([3, 8], 6)
|
|
self.assertFalse(result)
|
|
|
|
def test_two_movies_half_flight_length(self):
|
|
result = can_two_movies_fill_flight([3, 8, 3], 6)
|
|
self.assertTrue(result)
|
|
|
|
def test_lots_of_possible_pairs(self):
|
|
result = can_two_movies_fill_flight([1, 2, 3, 4, 5, 6], 7)
|
|
self.assertTrue(result)
|
|
|
|
def test_not_using_first_movie(self):
|
|
result = can_two_movies_fill_flight([4, 3, 2], 5)
|
|
self.assertTrue(result)
|
|
|
|
def test_only_one_movie(self):
|
|
result = can_two_movies_fill_flight([6], 6)
|
|
self.assertFalse(result)
|
|
|
|
def test_no_movies(self):
|
|
result = can_two_movies_fill_flight([], 2)
|
|
self.assertFalse(result)
|
|
|
|
|
|
unittest.main(verbosity=2)
|