summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Solution/solution.py83
1 files changed, 83 insertions, 0 deletions
diff --git a/Solution/solution.py b/Solution/solution.py
new file mode 100644
index 0000000..6b407e4
--- /dev/null
+++ b/Solution/solution.py
@@ -0,0 +1,83 @@
+#!/usr/bin/python3
+
+import itertools
+import pprint
+import numpy
+
+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]
+
+ bigger_money = 0;
+ for combination in list_all_combinations:
+ current_money = settings["money"]
+
+ machine_to_sell = []
+ machines_bought = []
+ for n in combination:
+ machine_to_sell.append(story[n])
+
+ 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