Start Typing !!! type the highlighted character. You can't scroll once you start typing.
filename

greedy.py

class things:

def __init__(self, name, value, weight):

self.name = name

self.value = value

self.weight = weight

def __repr__(self):

return f"{self.__class__.__name__}({self.name}, {self.value}, {self.weight})"

def get_value(self):

return self.value

def get_name(self):

return self.name

def get_weight(self):

return self.weight

def value_Weight(self):

return self.value / self.weight

def build_menu(name, value, weight):

menu = []

for i in range(len(value)):

menu.append(things(name[i], value[i], weight[i]))

return menu

def greedy(item, maxCost, keyFunc):

itemsCopy = sorted(item, key=keyFunc, reverse=True)

result = []

totalValue, total_cost = 0.0, 0.0

for i in range(len(itemsCopy)):

if (total_cost + itemsCopy[i].get_weight()) <= maxCost:

result.append(itemsCopy[i])

total_cost += itemsCopy[i].get_weight()

totalValue += itemsCopy[i].get_value()

return (result, totalValue)

def test_greedy():

"""

>>> food = ["Burger", "Pizza", "Coca Cola", "Rice",

... "Sambhar", "Chicken", "Fries", "Milk"]

>>> value = [80, 100, 60, 70, 50, 110, 90, 60]

>>> weight = [40, 60, 40, 70, 100, 85, 55, 70]

>>> foods = build_menu(food, value, weight)

>>> foods # doctest: +NORMALIZE_WHITESPACE

[things(Burger, 80, 40), things(Pizza, 100, 60), things(Coca Cola, 60, 40),

things(Rice, 70, 70), things(Sambhar, 50, 100), things(Chicken, 110, 85),

things(Fries, 90, 55), things(Milk, 60, 70)]

>>> greedy(foods, 500, things.get_value) # doctest: +NORMALIZE_WHITESPACE

([things(Chicken, 110, 85), things(Pizza, 100, 60), things(Fries, 90, 55),

things(Burger, 80, 40), things(Rice, 70, 70), things(Coca Cola, 60, 40),

things(Milk, 60, 70)], 570.0)

"""

if __name__ == "__main__":

import doctest

doctest.testmod()