Skip to content

Instantly share code, notes, and snippets.

@aranibatta
Last active April 26, 2019 20:32
Show Gist options
  • Save aranibatta/ffa87e94d117a86fc05b6940e626ee56 to your computer and use it in GitHub Desktop.
Save aranibatta/ffa87e94d117a86fc05b6940e626ee56 to your computer and use it in GitHub Desktop.
Interview Code Written for Stripe (9/1/2016) by Arani Bhattacharyay
import unittest
def next_server_number(input):
if len(input) == 0:
return 1
output = 1
for value in input:
if value == output:
output += 1
return output
class TestNextServer(unittest.TestCase):
def test_blank(self):
self.assertEquals(next_server_number([]), 1)
def test_basic(self):
self.assertEquals(next_server_number([5, 4, 1, 2]), 3)
self.assertEquals(next_server_number([1, 2, 3, 4, 5]), 6)
self.assertEquals(next_server_number([5, 4, 3, 2]), 1)
self.assertEquals(next_server_number([1, 2, 3, 4, 6]), 5)
if __name__ == '__main__':
unittest.main()
def is_number(s):
try:
int(s)
return True
except ValueError:
return False
class Tracker
def __init__(self):
self.map = {}
def allocate(input):
if self.map.has_key(input):
val = next_server_number()
self.map[input].append(val)
return input + val
self.map[input] = [1]
return input + 1
def next_server_number(input):
if len(input) == 0:
return 1
output = 1
for value in input:
if value == output:
output += 1
return output
def deallocate(input)
i = 0
val = 0
name = ""
for char in input:
if (is_number(char)):
val = int(input[i:])
name = input[:i]
i += 1
self.map[name].remove(val)
if len(self.map[name]) == 0:
del self.map[name]
return None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment