From d702f5b463f79160b04289fa7618580b626a5cde Mon Sep 17 00:00:00 2001 From: neodarz Date: Thu, 9 Aug 2018 00:32:48 +0200 Subject: Add first implementation with testing all combinations of machines --- Solution/solution.py | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 Solution/solution.py 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 -- cgit v1.2.1