git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
		
			
				
	
	
		
			94 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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))
 |