Add 'universe/' from commit '8ad51b24dd'
				
					
				
			git-subtree-dir: universe git-subtree-mainline:15110e6de9git-subtree-split:8ad51b24dd
This commit is contained in:
		
						commit
						fb9380ba26
					
				
					 131 changed files with 13792 additions and 0 deletions
				
			
		
							
								
								
									
										34
									
								
								universe/data_structures_and_algorithms/shuffle.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								universe/data_structures_and_algorithms/shuffle.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| import random | ||||
| 
 | ||||
| 
 | ||||
| def get_random(floor, ceiling): | ||||
|     return random.randrange(floor, ceiling + 1) | ||||
| 
 | ||||
| 
 | ||||
| # shuffle_in_place :: [a] -> IO () | ||||
| def shuffle_in_place(xs): | ||||
|     """Fisher-Yates algorithm. Notice that shuffling here is the same as | ||||
|     selecting a random permutation of the input set, `xs`.""" | ||||
|     n = len(xs) - 1 | ||||
|     for i in range(len(xs)): | ||||
|         r = get_random(i, n) | ||||
|         xs[i], xs[r] = xs[r], xs[i] | ||||
|     return xs | ||||
| 
 | ||||
| 
 | ||||
| # shuffle :: [a] -> [a] | ||||
| def shuffle_not_in_place(xs): | ||||
|     result = [] | ||||
| 
 | ||||
|     while xs: | ||||
|         i = get_random(0, len(xs) - 1) | ||||
|         x = xs.pop(i) | ||||
|         result.append(x) | ||||
| 
 | ||||
|     return result | ||||
| 
 | ||||
| 
 | ||||
| xs = [x for x in range(9)] | ||||
| print(xs) | ||||
| # print(shuffle_not_in_place(xs)) | ||||
| print(shuffle_in_place(xs[:])) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue