[CentralOH] Python Problem for DoJo Tonight
mrehner
mrehner at e-wrench.net
Fri Mar 15 15:01:08 EDT 2019
Hi
Since no one posted a solution here's one with a list of python tutorial links.
import random
import string
# a list of urls for testing
url_list = ["https://astro-pi.org/",
"https://wiki.python.org/moin/BeginnersGuide",
"http://gvr.sourceforge.net/",
"https://docs.python-guide.org/",
"https://docs.python.org/3/tutorial/",
"https://developers.google.com/edu/python/",
"https://docs.python.org/3/tutorial/"]
# the data store- a key,value pair
url_dict = {}
# if url is not in the url dictionary
# creates a random 6 character key
# updates url dictionary with key and url
def shorten(url):
if not search_for_url(url):
key = make_key()
# Add new key value pair
url_dict.update({key: url})
# returns a url value if key is in dictionary, if not returns None (null)
def restore(short):
return url_dict.get(short, None)
# Create 6 char key using upper case, lower case and numerical digits
def make_key():
# seed function automatically called with system current time value as the seed value.
random.seed()
return ''.join(random.choice(string.ascii_letters + string.digits) for _i in range(6))
# returns true if a url is a value in the dictionary
def search_for_url(url):
return url in url_dict.values()
if __name__ == '__main__':
# fill the dictionary
for item in url_list:
shorten(item)
# Verify results
for k in url_dict:
print(k, ": ", url_dict[k])
print("url for key: ", k, " is ", restore(k), "\n")
print("Should return None: ", restore("1a2b3c"))
I'm sure it can be improved and some may worry about a collision with a 62^6 random character generator, but that's it for me.
Cheers,
Mike
______________________________________
From: CentralOH [centraloh-bounces+mrehner=e-wrench.net at python.org] on behalf of Travis Risner [deeppunster at gmail.com]
Sent: Thursday, March 14, 2019 3:22 PM
To: COhPy Mailing List
Subject: [CentralOH] Python Problem for DoJo Tonight
Hi folks,
Here is today’s problem for people who show up at the DoJo tonight.
Implement a URL shortener with the following methods:
shorten(URL), which shortens the URL into a six-character alphanumeric
string, such as zLg6wl.
restore(short), which expands the shortened string into the
original URL. If no such shortened string exists, return null.
Hint: What if we enter the same URL twice?
See you at the DoJo:
Smokehouse Brewing
1130 Dublin Road
Columbus, OH 43215
(614) 485-0227
Travis
More information about the CentralOH
mailing list