def marc_algo(pizza_list, nb_2group, nb_3group, nb_4group, hist): teams_list = [] # Add Pizza to each Team for i in range(nb_2group): if len(pizza_list) > 2: t = Team(2) p1 = pizza_list[0] p2 = pizza_list[1] t.add_pizza(p1) t.add_pizza(p2) pizza_list.remove(p1) pizza_list.remove(p2) teams_list.append(t) for i in range(nb_3group): if len(pizza_list) > 3: t = Team(3) p1 = pizza_list[0] p2 = pizza_list[1] p3 = pizza_list[2] t.add_pizza(p1) t.add_pizza(p2) t.add_pizza(p3) pizza_list.remove(p1) pizza_list.remove(p2) pizza_list.remove(p3) teams_list.append(t) for i in range(nb_4group): if len(pizza_list) > 4: t = Team(4) p1 = pizza_list[0] p2 = pizza_list[1] p3 = pizza_list[2] p4 = pizza_list[3] t.add_pizza(p1) t.add_pizza(p2) t.add_pizza(p3) t.add_pizza(p4) pizza_list.remove(p1) pizza_list.remove(p2) pizza_list.remove(p3) pizza_list.remove(p4) teams_list.append(t) return teams_list
def algo_v1_fun(pizza_list, nb_2group, nb_3group, nb_4group, target=2): teams_list = [] # Add Pizza to each Team for i in range(nb_2group): if len(pizza_list) >= 2: t = Team(2) p1 = pizza_list[0] p2 = pizza_list[1] sc2 = score_2_pizzas(p1, p2) j = 2 sc2_y = 0 while sc2_y < target and j < len(pizza_list): p_tmp = pizza_list[j] j += 1 sc2_y = score_2_pizzas(p1, p_tmp) if sc2_y > sc2: p2 = p_tmp t.add_score(sc2) t.add_pizza(p1) t.add_pizza(p2) pizza_list.remove(p1) pizza_list.remove(p2) teams_list.append(t) for i in range(nb_3group): if len(pizza_list) >= 3: t = Team(3) p1 = pizza_list[0] p2 = pizza_list[1] t.add_pizza(p1) pizza_list.remove(p1) j = 2 while sc2_y < target and j < len(pizza_list): p_tmp = pizza_list[j] j += 1 sc2_y = score_2_pizzas(p1, p_tmp) if sc2_y > sc2: p2 = p_tmp t.add_pizza(p2) pizza_list.remove(p2) p3 = pizza_list[0] sc3 = score_3_pizzas(p1, p2, p3) j = 1 while sc3 < target / 2 and j < len(pizza_list): p_tmp = pizza_list[j] j += 1 sc3_tmp = score_3_pizzas(p1, p2, p_tmp) if sc3_tmp > sc3: p3 = p_tmp t.add_pizza(p3) pizza_list.remove(p3) teams_list.append(t) for i in range(nb_4group): if len(pizza_list) >= 4: t = Team(4) p1 = pizza_list[0] p2 = pizza_list[1] t.add_pizza(p1) pizza_list.remove(p1) j = 1 while sc2_y < target and j < len(pizza_list): p_tmp = pizza_list[j] j += 1 sc2_y = score_2_pizzas(p1, p_tmp) if sc2_y > sc2: p2 = p_tmp t.add_pizza(p2) pizza_list.remove(p2) p3 = pizza_list[0] sc3 = score_3_pizzas(p1, p2, p3) j = 1 while sc3 < target / 2 and j < len(pizza_list): p_tmp = pizza_list[j] j += 1 sc3_tmp = score_3_pizzas(p1, p2, p_tmp) if sc3_tmp > sc3: p3 = p_tmp t.add_pizza(p3) pizza_list.remove(p3) p4 = pizza_list[0] sc4 = score_4_pizzas(p1, p2, p3, p4) j = 1 while sc4 < target / 4 and j < len(pizza_list): p_tmp = pizza_list[j] j += 1 sc4_tmp = score_4_pizzas(p1, p2, p3, p_tmp) if sc4_tmp > sc3: p4 = p_tmp t.add_pizza(p4) pizza_list.remove(p4) teams_list.append(t) return teams_list