git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
		
			
				
	
	
		
			19 lines
		
	
	
	
		
			516 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
	
		
			516 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| # permutations: no repeat characters
 | |
| 
 | |
| def char_and_rest(i, xs):
 | |
|     return xs[i], xs[0:i] + xs[i + 1:]
 | |
| 
 | |
| def permutations(xs):
 | |
|     if len(xs) == 1:
 | |
|         return [xs]
 | |
|     result = []
 | |
|     for c, rest in [char_and_rest(i, xs) for i in range(len(xs))]:
 | |
|         result += [c + perm for perm in permutations(rest)]
 | |
|     return result
 | |
| 
 | |
| expected = ["cat", "cta", "act", "atc", "tca", "tac"]
 | |
| result = permutations("cat")
 | |
| print(result, expected)
 | |
| assert len(result) == len(expected)
 | |
| assert result == expected
 | |
| print("Success!")
 |