Para responder essa questão, devemos analisar como podemos combinar as 4 vacas aos pares para ir no cabeçote, e com o resultado, obter as formas que são possíveis de fazer a travessia em 34 minutos:
import numpy as np
import pandas as pd
import itertools
cows = [2, 4, 10, 20]
cownames = ['Mazie', 'Daisy', 'Crazy', 'Lazy']
#Fazendo Combinações aos pares da velocidade das vacas.
cj = list()
for subset in itertools.combinations(cows, 2):
cj.append(subset)
cjn = list()
for subset in itertools.combinations(cownames, 2):
cjn.append(subset)
Como no cabeçote as vacas devem ir na velocidade da mais devagar, devemos obter, entre as possíveis duplas no cabeçote, a velocidade da que faz a travessia em mais tempo, e somá-la com a das demais:
#Obtendo a duração da travessia para cada combinação de vacas na jangada.
cjr = list()
for i in range(0, len(cj)):
x = max(cj[i]) + np.sum(cows) - np.sum(cj[i])
cjr.append(x)
Tab = np.hstack((cjn, np.transpose([cjr])))
Tab = pd.DataFrame(Tab,
columns=['Vaca 1 no Cabeçote', 'Vaca 2 no Cabeçote', 'Duração'],
index=['Comb. 1', 'Comb. 2', 'Comb. 3', 'Comb. 4', 'Comb. 5', 'Comb. 6'])
print(Tab)
Vaca 1 no Cabeçote Vaca 2 no Cabeçote Duração
Comb. 1 Mazie Daisy 34
Comb. 2 Mazie Crazy 34
Comb. 3 Mazie Lazy 34
Comb. 4 Daisy Crazy 32
Comb. 5 Daisy Lazy 32
Comb. 6 Crazy Lazy 26
Logo, notamos que as combinações que são possíveis para atravessar as vacas em 34 minutos são as que levam no cabeçote 'Mazie e Daisy', 'Mazie e Crazy' ou 'Mazie e Lazy' e fazem a travessia com as restantes isoladamente.