diff options
Diffstat (limited to 'Solution')
-rw-r--r-- | Solution/solution_debut_vente.py | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/Solution/solution_debut_vente.py b/Solution/solution_debut_vente.py new file mode 100644 index 0000000..fc838aa --- /dev/null +++ b/Solution/solution_debut_vente.py @@ -0,0 +1,115 @@ +#!/usr/bin/python3 + +import itertools +import pprint +import numpy + + +def foo(aaa): + return aaa + +file = open("../input.txt", "r") + +story_table = [] +stories_table = [] +nb_machines = 0 +loop_number = 0 + +for line in file: + + line_table = list(map(int, line.split())) + keys_line_table_story = ['machines', 'money', 'time'] + keys_line_table_machines = ['day_sell', 'buy_price', 'resale_price', 'day_profit'] + l = list() + for a in range(0, len(line_table)): + l.append((line_table[a])) + if len(line_table) == 3: + line_table = dict(zip(keys_line_table_story,l)) + else: + line_table = dict(zip(keys_line_table_machines,l)) + + if len(line_table) == 3: + nb_machines = line_table["machines"] + if loop_number > 0: + stories_table.append(story_table) + story_table = [] + + story_table.append(line_table) + + loop_number += 1 + +case = 1 +for story in stories_table: + settings = story[0] + + list_machine_number = [] + for machine_number in range(1, settings['machines']+1): + list_machine_number.append(machine_number) + + list_all_combinations = [] + for machine_number in range(1, settings['machines']+1): + list_all_combinations.append([list(x) for x in itertools.combinations(list_machine_number, machine_number)]) + + for combination_number in range(0, len(list_all_combinations)): + list_all_combinations[combination_number].append([]) + + # Transform the two dimensionnal array in list_machine_number in one + # dimensional array + list_all_combinations = [x for sublist in list_all_combinations for x in sublist] + + tests_vente_robot = [] + num_machine=0 + for machine in story: + if len(machine) > 3: + test_vente_robot = [] + for day in range(machine['day_sell']+1, settings['time']+1): + test_vente_robot.append((num_machine, day)) + tests_vente_robot.append(test_vente_robot) + num_machine+=1 + + bigger_money = 0; + for combination in list_all_combinations: + + machine_to_sell = [] + for n in combination: + machine_to_sell.append(story[n]) + + if len(combination) > 0: + test_vente_posibilities = [] + for num in combination: + test_vente_posibilities += tests_vente_robot[num-1] + + combination_of_robots = [] + for i in range(2, len(combination)+1): + combination_of_robots += itertools.combinations(combination, i) + + for entry in combination_of_robots: + str_test_vente_posibilities = '' + for num_robot in entry: + if str_test_vente_posibilities != "": + str_test_vente_posibilities += ',' + str_test_vente_posibilities += str(tests_vente_robot[num_robot-1]) + exec("test_vente_posibilities += itertools.product("+str_test_vente_posibilities+")") + + for possiblity in test_vente_posibilities: + current_money = settings["money"] + machines_bought = [] + for day in range(0, settings["time"]+1): + for machines in machines_bought: + current_money += machines["day_profit"] + buyable_machines = [] + for machine_number in range(0, len(machine_to_sell)): + if day == machine_to_sell[machine_number]["day_sell"]: + buyable_machines.append(machine_to_sell[machine_number]) + for machines in buyable_machines: + if machines["buy_price"] <= current_money: + machines_bought.append(machines) + current_money -= machines["buy_price"] + if current_money > bigger_money: + bigger_money = current_money + + if len(list_all_combinations ) == 0: + bigger_money = settings['money'] + + print("Case "+ str(case) + ": " + str(bigger_money)) + case += 1 |