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
				
			
		
							
								
								
									
										94
									
								
								scratch/facebook/scratch.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								scratch/facebook/scratch.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,94 @@ | |||
| # This is a scratch pad for randomly selected questions | ||||
| 
 | ||||
| # def char_and_rest(i, xs): | ||||
| #     return xs[i], xs[:i] + xs[i+1:] | ||||
| 
 | ||||
| # def perms(xs): | ||||
| #     if len(xs) == 1: | ||||
| #         return [xs] | ||||
| #     result = [] | ||||
| #     for i in range(len(xs)): | ||||
| #         c, rest = char_and_rest(i, xs) | ||||
| #         for perm in perms(rest): | ||||
| #             result.append(c + ''.join(perm)) | ||||
| #     return result | ||||
| 
 | ||||
| # print(perms(list("woah"))) | ||||
| 
 | ||||
| # def f(take_out, dine_in, served): | ||||
| #     j, k = 0, 0 | ||||
| #     for i in range(len(served)): | ||||
| #         if j < len(take_out) and served[i] == take_out[j]: | ||||
| #             j += 1 | ||||
| #         elif k < len(dine_in) and served[i] == dine_in[k]: | ||||
| #             k += 1 | ||||
| #         else: | ||||
| #             return False | ||||
| #     if j < len(take_out) or k < len(dine_in): | ||||
| #         return False | ||||
| #     return True | ||||
| 
 | ||||
| # take_out = [17, 8, 24] | ||||
| # dine_in = [12, 19, 2] | ||||
| # served = [17, 8, 12, 19, 24, 2] | ||||
| # print(f(take_out, dine_in, served)) | ||||
| 
 | ||||
| # def match(a, b): | ||||
| #     if a == '{': | ||||
| #         return b == '}' | ||||
| #     if a == '[': | ||||
| #         return b == ']' | ||||
| #     if a == '(': | ||||
| #         return b == ')' | ||||
| #     return False | ||||
| 
 | ||||
| # def f(xs): | ||||
| #     s = [] | ||||
| #     for c in xs: | ||||
| #         if c in {'{', '[', '('}: | ||||
| #             s.append(c) | ||||
| #         elif c in {'}', ']', ')'}: | ||||
| #             opener = s.pop() | ||||
| #             if not match(opener, c): | ||||
| #                 return False | ||||
| #     return len(s) == 0 | ||||
| 
 | ||||
| # assert f("{[]()}") | ||||
| # assert f("{[(])}") == False | ||||
| # assert f("{[}") == False | ||||
| # print("Success!") | ||||
| 
 | ||||
| # def valid_bst(node): | ||||
| #     lhs = max_bst_value(node.left) if node.left else float('-inf') | ||||
| #     rhs = min_bst_value(node.right) if node.right else float('inf') | ||||
| 
 | ||||
| #     return and([ | ||||
| #         lhs <= node.value, | ||||
| #         rhs > node.value, | ||||
| #         valid_bst(node.left), | ||||
| #         valid_bst(node.right), | ||||
| #     ]) | ||||
| 
 | ||||
| import random | ||||
| import math | ||||
| 
 | ||||
| def shuffle(xs): | ||||
|     n = len(xs) | ||||
|     for i in range(n - 1): | ||||
|         j = random.randint(i + 1, n - 1) | ||||
|         xs[i], xs[j] = xs[j], xs[i] | ||||
|     return xs | ||||
| 
 | ||||
| def as_card(i): | ||||
|     if i not in range(1, 53): | ||||
|         raise Exception("Not a card") | ||||
|     # 1 | ||||
|     suit = ['Hearts', 'Clubs', 'Diamonds', 'Spades'][math.floor((i - 1) / 13)] | ||||
|     n = ['Ace',2,3,4,5,6,7,8,9,10,'Jack','Queen','King'][(i - 1) % 13] | ||||
|     return '{} of {}'.format(n, suit) | ||||
| 
 | ||||
| xs = list(range(1, 53)) | ||||
| print(xs) | ||||
| shuffle(xs) | ||||
| for x in xs: | ||||
|     print(as_card(x)) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue