Respuesta :
Using the computational knowledge in python it is possible to write a code that Given a name and a Python list of Cow objects
Writting the code in python:
def load_cows(filename):
cow_dict = dict()
f = open(filename, 'r')
for line in f:
line_data = line.split(',')
cow_dict[line_data[0]] = int(line_data[1])
return cow_dict
def greedy_cow_transport(cows, limit=10):
trips = []
cowsCopy = cows.copy()
sortedCows = sorted(cowsCopy.items(), key=lambda x: x[1], reverse = True)
while sum(cowsCopy.values()) > 0:
ship = []
total = 0
for cow, value in sortedCows:
if cowsCopy[cow] != 0 and value + total <= limit:
ship.append(cow)
total += value
cowsCopy[cow] = 0
trips.append(ship)
return trips
def brute_force_cow_transport(cows,limit=10):
trips = []
possibilities = []
for i in power_list:
ship = []
for j in i:
ship_weights = []
for k in j:
ship_weights.append(cows[k])
#print(ship_weights)
ship.append(sum(ship_weights))
#print(ship)
if all(d <= limit for d in ship):
possibilities.append(i)
pruned_possibilities = []
for k in possibilities:
if k not in pruned_possibilities:
pruned_possibilities.append(k)
# now find the minimum list length:
min_list_len = min(map(len, pruned_possibilities))
for l in pruned_possibilities:
if len(l) == min_list_len:
return l
def compare_cow_transport_algorithms():
greedy_start = time.time()
greedy_results = greedy_cow_transport(cows, limit = 10)
greedy_end = time.time()
print('Greedy Algorithm time:', greedy_end -greedy_start)
brute_force_start = time.time()
brute_force_results = brute_force_cow_transport(cows, limit = 10)
brute_force_end = time.time()
print('Brute force time:', brute_force_end - brute_force_start)
print('Greedy Algorithm results:', greedy_results)
print('Number of trips returned by Greedy Algorithm:', len(greedy_results))
print('Brute Force Algorithm results:', brute_force_results)
print('Number of trips returned by Brute Force Algorithm:', len(brute_force_results))
See more about python at brainly.com/question/13437928
#SPJ1

