Add coding exercises for Facebook interviews
Add attempts at solving coding problems to Briefcase.
This commit is contained in:
parent
d2d772e43e
commit
aa66d9b83d
66 changed files with 2994 additions and 0 deletions
50
scratch/facebook/language2.py
Normal file
50
scratch/facebook/language2.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def tokenize(xs):
|
||||
result = []
|
||||
i = 0
|
||||
while i < len(xs):
|
||||
curr = xs[i]
|
||||
if curr in {'*','+'}:
|
||||
result.append(curr)
|
||||
i += 1
|
||||
continue
|
||||
i += 1
|
||||
while i < len(xs) and xs[i] in {str(x) for x in range(10)}:
|
||||
curr += xs[i]
|
||||
i += 1
|
||||
result.append(int(curr))
|
||||
return result
|
||||
|
||||
def parse(tokens):
|
||||
result = []
|
||||
series = []
|
||||
for token in tokens:
|
||||
if token == '*':
|
||||
continue
|
||||
elif token == '+':
|
||||
result.append(series)
|
||||
series = []
|
||||
else:
|
||||
series.append(token)
|
||||
if series:
|
||||
result.append(series)
|
||||
return result
|
||||
|
||||
def product(xs):
|
||||
result = 1
|
||||
for x in xs:
|
||||
result *= x
|
||||
return result
|
||||
|
||||
def evaluate(tree):
|
||||
return sum([product(xs) for xs in tree])
|
||||
|
||||
print(evaluate(parse(tokenize("2+30*8*9+10"))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue