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
				
			
		
							
								
								
									
										57
									
								
								universe/data_structures_and_algorithms/coins.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								universe/data_structures_and_algorithms/coins.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,57 @@ | |||
| import unittest | ||||
| from math import floor | ||||
| 
 | ||||
| ################################################################################ | ||||
| # Solution | ||||
| ################################################################################ | ||||
| 
 | ||||
| # change_possibilities :: Int -> [Int] -> Int | ||||
| def change_possibilities(n, xs): | ||||
|     combinations = [0] * (n + 1) | ||||
|     combinations[0] = 1 | ||||
| 
 | ||||
|     for x in xs: | ||||
|         for i in range(len(combinations)): | ||||
|             if i >= x: | ||||
|                 combinations[i] += combinations[i - x] | ||||
| 
 | ||||
|     return combinations[n] | ||||
| 
 | ||||
| 
 | ||||
| ################################################################################ | ||||
| # Tests | ||||
| ################################################################################ | ||||
| class Test(unittest.TestCase): | ||||
| 
 | ||||
|     def test_sample_input(self): | ||||
|         actual = change_possibilities(4, (1, 2, 3)) | ||||
|         expected = 4 | ||||
|         self.assertEqual(actual, expected) | ||||
| 
 | ||||
|     def test_one_way_to_make_zero_cents(self): | ||||
|         actual = change_possibilities(0, (1, 2)) | ||||
|         expected = 1 | ||||
|         self.assertEqual(actual, expected) | ||||
| 
 | ||||
|     def test_no_ways_if_no_coins(self): | ||||
|         actual = change_possibilities(1, ()) | ||||
|         expected = 0 | ||||
|         self.assertEqual(actual, expected) | ||||
| 
 | ||||
|     def test_big_coin_value(self): | ||||
|         actual = change_possibilities(5, (25, 50)) | ||||
|         expected = 0 | ||||
|         self.assertEqual(actual, expected) | ||||
| 
 | ||||
|     def test_big_target_amount(self): | ||||
|         actual = change_possibilities(50, (5, 10)) | ||||
|         expected = 6 | ||||
|         self.assertEqual(actual, expected) | ||||
| 
 | ||||
|     def test_change_for_one_dollar(self): | ||||
|         actual = change_possibilities(100, (1, 5, 10, 25, 50)) | ||||
|         expected = 292 | ||||
|         self.assertEqual(actual, expected) | ||||
| 
 | ||||
| 
 | ||||
| unittest.main(verbosity=2) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue