Manually merging: - README.md: I added the description from universe/README.md into the heading of dotfiles/README.md. - .envrc: dotfiles/.envrc was a superset of universe/.envrc - .gitignore: Adding some of the ignored patterns from universe/.gitignore to dotfiles/.gitignore Everything else here should be a simple rename.
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import unittest
 | 
						|
from math import floor
 | 
						|
 | 
						|
 | 
						|
def knapify(xs, capacity=None):
 | 
						|
    assert capacity is not None
 | 
						|
    n = len(xs)
 | 
						|
    # For 0/1 Knapsack, we must use a table, since this will encode which values
 | 
						|
    # work for which items. This is cleaner than including a separate data
 | 
						|
    # structure to capture it.
 | 
						|
    maxes = [[0 for x in range(capacity + 1)] for x in range(n + 1)]
 | 
						|
 | 
						|
    # Build table maxes[][] in bottom up manner
 | 
						|
    for row in range(n + 1):
 | 
						|
        for col in range(capacity + 1):
 | 
						|
            if row == 0 or col == 0:
 | 
						|
                maxes[row][col] = 0
 | 
						|
            elif xs[row - 1][0] <= col:
 | 
						|
                maxes[row][col] = max(
 | 
						|
                    xs[row - 1][1] + maxes[row - 1][col - xs[row - 1][0]],
 | 
						|
                    maxes[row - 1][col])
 | 
						|
            else:
 | 
						|
                maxes[row][col] = maxes[row - 1][col]
 | 
						|
 | 
						|
    return maxes[-1][capacity]
 | 
						|
 | 
						|
 | 
						|
################################################################################
 | 
						|
# Tests
 | 
						|
################################################################################
 | 
						|
class Test(unittest.TestCase):
 | 
						|
    def test_one_cake(self):
 | 
						|
        actual = knapify([(3, 10), (2, 15), (7, 2), (12, 20)], capacity=12)
 | 
						|
        expected = None
 | 
						|
        self.assertEqual(actual, expected)
 | 
						|
 | 
						|
 | 
						|
unittest.main(verbosity=2)
 |