summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Solution/solution_debut_vente.py115
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