mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 20:26:07 -04:00
some simple interview problems
This commit is contained in:
parent
3536f80ca0
commit
045e2cc061
@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
__author__ = "bt3"
|
||||||
|
|
||||||
|
|
||||||
|
class HashTable(object):
|
||||||
|
def __init__(self, slots=10):
|
||||||
|
self.slots = slots
|
||||||
|
self.table = []
|
||||||
|
self.__create_table()
|
||||||
|
|
||||||
|
def __hash_key(self, value):
|
||||||
|
return hash(value)%self.slots
|
||||||
|
|
||||||
|
def __create_table(self):
|
||||||
|
for i in range(self.slots):
|
||||||
|
self.table.append([])
|
||||||
|
|
||||||
|
def add_item(self, value):
|
||||||
|
key = self.__hash_key(value)
|
||||||
|
self.table[key].append(value)
|
||||||
|
|
||||||
|
def print_table(self):
|
||||||
|
for key in range(len(self.table)):
|
||||||
|
print "Key is %s, value is %s." %(key, self.table[key])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
dic = HashTable(5)
|
||||||
|
for i in range(1, 40, 2):
|
||||||
|
dic.add_item(i)
|
||||||
|
|
||||||
|
dic.print_table()
|
@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
def benchmark(func):
|
||||||
|
import time
|
||||||
|
def wrapper(*args, **kwargs):
|
||||||
|
t = time.clock()
|
||||||
|
res = func(*args, **kwargs)
|
||||||
|
print("\t%s" % func.__name__, time.clock()-t)
|
||||||
|
return res
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
@benchmark
|
||||||
|
def random_tree(n):
|
||||||
|
temp = [n for n in range(n)]
|
||||||
|
for i in range(n+1):
|
||||||
|
temp[random.choice(temp)] = random.choice(temp)
|
||||||
|
return temp
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
random_tree(10000)
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
__author__ = "bt3"
|
||||||
|
|
||||||
|
" Example of generator."
|
||||||
|
|
||||||
|
def reverse(data):
|
||||||
|
for i in range(len(data)-1, -1, -1):
|
||||||
|
yield data[i]
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
for c in reverse('awesome'):
|
||||||
|
print c
|
@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
teste = lambda x: x**2
|
||||||
|
print teste(3)
|
35
src/extra_interview_problems/basic_examples/export_pickle.py
Normal file
35
src/extra_interview_problems/basic_examples/export_pickle.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
""" simple example of how to use pickle to export files """
|
||||||
|
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def export_pickle(data, filename='test.dat', compress=False):
|
||||||
|
|
||||||
|
fh = None
|
||||||
|
try:
|
||||||
|
if compress:
|
||||||
|
fh = gzip.open(filename, "wb") # write binary
|
||||||
|
else:
|
||||||
|
fh = open(filename, "wb") # compact binary pickle format
|
||||||
|
pickle.dump(data, fh, pickle.HIGHEST_PROTOCOL)
|
||||||
|
|
||||||
|
except(EnvironmentError, pickle.PickingError) as err:
|
||||||
|
print("{0}: export error: {1}".format(os.path.basename(sys.argv[0], err)))
|
||||||
|
return False
|
||||||
|
|
||||||
|
finally:
|
||||||
|
if fh is not None:
|
||||||
|
fh.close()
|
||||||
|
|
||||||
|
|
||||||
|
def test_export_pickle():
|
||||||
|
mydict = {'a': 1, 'b': 2, 'c': 3}
|
||||||
|
export_pickle(mydict)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
test_export_pickle()
|
36
src/extra_interview_problems/basic_examples/import_pickle.py
Normal file
36
src/extra_interview_problems/basic_examples/import_pickle.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
|
||||||
|
__author__ = "Mari Wahl"
|
||||||
|
__email__ = "marina.w4hl@gmail.com"
|
||||||
|
|
||||||
|
|
||||||
|
""" an example of using pickle for importing data from files """
|
||||||
|
|
||||||
|
|
||||||
|
import pickle
|
||||||
|
|
||||||
|
def import_pickle(filename):
|
||||||
|
fh = None
|
||||||
|
try:
|
||||||
|
fh = open(filename, "rb")
|
||||||
|
mydict2 = pickle.load(fh)
|
||||||
|
return mydict2
|
||||||
|
|
||||||
|
except (EnvironmentError) as err:
|
||||||
|
print ("{0}: import error: {0}".format(os.path.basename(sys.arg[0]), err))
|
||||||
|
return false
|
||||||
|
|
||||||
|
finally:
|
||||||
|
if fh is not None:
|
||||||
|
fh.close()
|
||||||
|
|
||||||
|
|
||||||
|
def test_import_pickle():
|
||||||
|
pkl_file = 'test.dat'
|
||||||
|
mydict = import_pickle(pkl_file)
|
||||||
|
print(mydict)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
test_import_pickle()
|
@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
|
||||||
|
__author__ = "bt3"
|
||||||
|
|
||||||
|
|
||||||
|
import socket
|
||||||
|
|
||||||
|
|
||||||
|
def netcat(hostname, port, content):
|
||||||
|
|
||||||
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
|
||||||
|
s.connect((hostname, port))
|
||||||
|
s.sendall(content)
|
||||||
|
|
||||||
|
adata = []
|
||||||
|
while 1:
|
||||||
|
data = s.recv(1024)
|
||||||
|
if data == '':
|
||||||
|
break
|
||||||
|
adata.append(data)
|
||||||
|
|
||||||
|
s.close()
|
||||||
|
return adata
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
PORT = 12345
|
||||||
|
HOSTNAME = '54.209.5.48'
|
||||||
|
|
||||||
|
message = netcat(HOSTNAME, PORT, 'Hello!')[1]
|
||||||
|
print message
|
@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
|
||||||
|
__author__ = "bt3gl"
|
||||||
|
|
||||||
|
|
||||||
|
from telnetlib import Telnet
|
||||||
|
|
||||||
|
|
||||||
|
# examples of telnet connections
|
||||||
|
PORT = 12345
|
||||||
|
HOST = '54.209.5.48'
|
||||||
|
|
||||||
|
# creating connection
|
||||||
|
tn = Telnet(HOST ,PORT)
|
||||||
|
|
||||||
|
# reading input
|
||||||
|
msg_in2 = tn.read_all().dec_msg()
|
||||||
|
tn.read_until(b'psifer text: ')
|
||||||
|
|
||||||
|
# writing outputs
|
||||||
|
tn.write(msg.encode() + b'\n')
|
@ -0,0 +1,65 @@
|
|||||||
|
-------------------------------------------
|
||||||
|
'''
|
||||||
|
>>> 1 == 1
|
||||||
|
False
|
||||||
|
'''
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import doctest
|
||||||
|
doctest.testmod()
|
||||||
|
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
class BasicsTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_find_name(self):
|
||||||
|
self.assertTrue(1 == 1)
|
||||||
|
self.assertFalse(1 == 2)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
|
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
# content of test_example.py, run with $ py.test
|
||||||
|
|
||||||
|
def func(x):
|
||||||
|
return x + 1
|
||||||
|
|
||||||
|
def test_answer():
|
||||||
|
assert func(3) == 4
|
||||||
|
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
# run tests over the directory
|
||||||
|
$ nosetest
|
||||||
|
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
filename = raw_input('Enter a file name: ')
|
||||||
|
try:
|
||||||
|
f = open(filename, "r")
|
||||||
|
except:
|
||||||
|
print 'There is no file named', filename
|
||||||
|
|
||||||
|
raise Exception('Invalid config file: expecting keys "aws_access_key", "aws_secret_key", "bucket"')
|
||||||
|
g = lambda x: x ** 2
|
||||||
|
|
||||||
|
try:
|
||||||
|
operation, filename = sys.argv[1:]
|
||||||
|
except ValueError:
|
||||||
|
print __doc__
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
subprocess.call()
|
||||||
|
try:
|
||||||
|
response = urllib2.urlopen()
|
||||||
|
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
import subprocess,os
|
||||||
|
|
||||||
|
os.system('ls')
|
||||||
|
subprocess.call(['ls', '-1'], shell=True)
|
@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
def define_if_permutation(word1, word2):
|
||||||
|
"""
|
||||||
|
>>> define_if_permutation('hello', 'lolhe')
|
||||||
|
True
|
||||||
|
>>> define_if_permutation('stripe', 'triipe')
|
||||||
|
False
|
||||||
|
"""
|
||||||
|
if sorted(word1) == sorted(word2):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import doctest
|
||||||
|
doctest.testmod()
|
@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
|
||||||
|
def find_if_unique_chars(word):
|
||||||
|
"""
|
||||||
|
>>> find_if_unique_chars('abcde')
|
||||||
|
True
|
||||||
|
>>> find_if_unique_chars('abcae')
|
||||||
|
False
|
||||||
|
"""
|
||||||
|
|
||||||
|
unique = True
|
||||||
|
|
||||||
|
counter = collections.Counter()
|
||||||
|
for c in word:
|
||||||
|
if not counter[c]:
|
||||||
|
counter[c] += 1
|
||||||
|
else:
|
||||||
|
unique = False
|
||||||
|
return unique
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import doctest
|
||||||
|
doctest.testmod()
|
@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
__author__ = "bt3"
|
||||||
|
|
||||||
|
|
||||||
|
def get_products_of_all_except_at_index(array):
|
||||||
|
'''
|
||||||
|
>>> a = [1, 7, 3, 4]
|
||||||
|
>>> get_products_of_all_except_at_index(a)
|
||||||
|
[84, 12, 28, 21]
|
||||||
|
'''
|
||||||
|
total = 1
|
||||||
|
for n in array:
|
||||||
|
total *= n
|
||||||
|
|
||||||
|
new_array = []
|
||||||
|
for n in array:
|
||||||
|
if n is not 0:
|
||||||
|
item = total/n
|
||||||
|
new_array.append(item)
|
||||||
|
else:
|
||||||
|
new_array.append(n)
|
||||||
|
|
||||||
|
return new_array
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import doctest
|
||||||
|
doctest.testmod()
|
@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
def invert_word(word):
|
||||||
|
"""
|
||||||
|
>>> invert_word('stripe is awesome')
|
||||||
|
'awesome is stripe'
|
||||||
|
"""
|
||||||
|
new_word = []
|
||||||
|
|
||||||
|
words = word.split(' ')
|
||||||
|
for word in words[::-1]:
|
||||||
|
new_word.append(word)
|
||||||
|
|
||||||
|
return " ".join(new_word)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
import doctest
|
||||||
|
doctest.testmod()
|
||||||
|
|
||||||
|
#word = 'stripe is awesome'
|
||||||
|
#print invert_word(word)
|
Loading…
x
Reference in New Issue
Block a user