Skip to content

Commit

Permalink
Convert all .py files to be valid Python
Browse files Browse the repository at this point in the history
`raise NotImplementedError('Please replace this line with your code...')` signals to the user where they need to put their code.

This approach enables the codebase to be tested with lint tools like flake8, pyflakes, pylint, etc.
  • Loading branch information
cclauss committed Mar 4, 2018
1 parent b566126 commit 6b4b5ba
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 39 deletions.
11 changes: 8 additions & 3 deletions solutions/object_oriented_design/call_center/call_center.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ def _dispatch_call(self, call, employees):
return employee
return None

def notify_call_escalated(self, call): # ...
def notify_call_completed(self, call): # ...
def dispatch_queued_call_to_newly_freed_employee(self, call, employee): # ...
def notify_call_escalated(self, call):
pass

def notify_call_completed(self, call):
pass

def dispatch_queued_call_to_newly_freed_employee(self, call, employee):
pass
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def score(self):

def possible_scores(self):
"""Return a list of possible scores, taking Aces into account."""
# ...
pass


class Deck(object):
Expand All @@ -113,4 +113,5 @@ def deal_card():
return None
return card

def shuffle(self): # ...
def shuffle(self):
pass
17 changes: 11 additions & 6 deletions solutions/object_oriented_design/lru_cache/lru_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,14 @@ def __init__(self):
self.head = None
self.tail = None

def move_to_front(self, node): # ...
def append_to_front(self, node): # ...
def remove_from_tail(self): # ...
def move_to_front(self, node):
pass

def append_to_front(self, node):
pass

def remove_from_tail(self):
pass


class Cache(object):
Expand All @@ -26,7 +31,7 @@ def __init__(self, MAX_SIZE):

def get(self, query)
"""Get the stored query result from the cache.
Accessing a node updates its position to the front of the LRU list.
"""
node = self.lookup[query]
Expand All @@ -37,7 +42,7 @@ def get(self, query)

def set(self, results, query):
"""Set the result for the given query key in the cache.
When updating an entry, updates its position to the front of the LRU list.
If the entry is new and the cache is at capacity, removes the oldest entry
before the new entry is added.
Expand All @@ -58,4 +63,4 @@ def set(self, results, query):
# Add the new key and value
new_node = Node(results)
self.linked_list.append_to_front(new_node)
self.lookup[query] = new_node
self.lookup[query] = new_node
51 changes: 37 additions & 14 deletions solutions/object_oriented_design/online_chat/online_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,20 @@ class UserService(object):
def __init__(self):
self.users_by_id = {} # key: user id, value: User

def add_user(self, user_id, name, pass_hash): # ...
def remove_user(self, user_id): # ...
def add_friend_request(self, from_user_id, to_user_id): # ...
def approve_friend_request(self, from_user_id, to_user_id): # ...
def reject_friend_request(self, from_user_id, to_user_id): # ...
def add_user(self, user_id, name, pass_hash):
pass

def remove_user(self, user_id):
pass

def add_friend_request(self, from_user_id, to_user_id):
pass

def approve_friend_request(self, from_user_id, to_user_id):
pass

def reject_friend_request(self, from_user_id, to_user_id):
pass


class User(object):
Expand All @@ -25,12 +34,23 @@ def __init__(self, user_id, name, pass_hash):
self.received_friend_requests_by_friend_id = {} # key: friend id, value: AddRequest
self.sent_friend_requests_by_friend_id = {} # key: friend id, value: AddRequest

def message_user(self, friend_id, message): # ...
def message_group(self, group_id, message): # ...
def send_friend_request(self, friend_id): # ...
def receive_friend_request(self, friend_id): # ...
def approve_friend_request(self, friend_id): # ...
def reject_friend_request(self, friend_id): # ...
def message_user(self, friend_id, message):
pass

def message_group(self, group_id, message):
pass

def send_friend_request(self, friend_id):
pass

def receive_friend_request(self, friend_id):
pass

def approve_friend_request(self, friend_id):
pass

def reject_friend_request(self, friend_id):
pass


class Chat(metaclass=ABCMeta):
Expand All @@ -51,8 +71,11 @@ def __init__(self, first_user, second_user):

class GroupChat(Chat):

def add_user(self, user): # ...
def remove_user(self, user): # ...
def add_user(self, user):
pass

def remove_user(self, user):
pass


class Message(object):
Expand All @@ -77,4 +100,4 @@ class RequestStatus(Enum):
UNREAD = 0
READ = 1
ACCEPTED = 2
REJECTED = 3
REJECTED = 3
12 changes: 8 additions & 4 deletions solutions/object_oriented_design/parking_lot/parking_lot.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from abc import ABCMeta, abstractmethod
from enum import Enum


class VehicleSize(Enum):
Expand Down Expand Up @@ -92,11 +93,11 @@ def park_vehicle(self, vehicle):

def _find_available_spot(self, vehicle):
"""Find an available spot where vehicle can fit, or return None"""
# ...
pass

def _park_starting_at_spot(self, spot, vehicle):
"""Occupy starting at spot.spot_number to vehicle.spot_size."""
# ...
pass


class ParkingSpot(object):
Expand All @@ -117,5 +118,8 @@ def can_fit_vehicle(self, vehicle):
return False
return vehicle.can_fit_in_spot(self)

def park_vehicle(self, vehicle): # ...
def remove_vehicle(self): # ...
def park_vehicle(self, vehicle):
pass

def remove_vehicle(self):
pass
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@ def __init__(self, person_ids, lookup):
def bfs(self, source, dest):
# Use self.visited_ids to track visited nodes
# Use self.lookup to translate a person_id to a Person
pass
20 changes: 10 additions & 10 deletions solutions/system_design/web_crawler/web_crawler_snippets.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,33 @@

class PagesDataStore(object):

def __init__(self, db);
def __init__(self, db):
self.db = db
...
pass

def add_link_to_crawl(self, url):
"""Add the given link to `links_to_crawl`."""
...
pass

def remove_link_to_crawl(self, url):
"""Remove the given link from `links_to_crawl`."""
...
pass

def reduce_priority_link_to_crawl(self, url)
def reduce_priority_link_to_crawl(self, url):
"""Reduce the priority of a link in `links_to_crawl` to avoid cycles."""
...
pass

def extract_max_priority_page(self):
"""Return the highest priority link in `links_to_crawl`."""
...
pass

def insert_crawled_link(self, url, signature):
"""Add the given link to `crawled_links`."""
...
pass

def crawled_similar(self, signature):
"""Determine if we've already crawled a page matching the given signature"""
...
pass


class Page(object):
Expand All @@ -41,7 +41,7 @@ def __init__(self, url, contents, child_urls):

def create_signature(self):
# Create signature based on url and contents
...
pass


class Crawler(object):
Expand Down

0 comments on commit 6b4b5ba

Please sign in to comment.