From 0edd2a33b81200b9ffdf7541ba0f7babaa765c1f Mon Sep 17 00:00:00 2001 From: jfmontanaro Date: Wed, 18 Jan 2017 15:16:47 -0800 Subject: [PATCH] robots finished --- 10-1.py | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/10-1.py b/10-1.py index 7c14d45..b46a08a 100644 --- a/10-1.py +++ b/10-1.py @@ -1,7 +1,7 @@ # Python! import collections -class bot: +class robot: def __init__(self, instructions): words = instructions.split() self.number = words[1] @@ -21,23 +21,22 @@ class bot: def take(self, value): self.chips.append(value) if len(self.chips) > 1: - self.execute() + xqueue.append(self) def execute(self): - low, high = min(self.chips), max(self.chips) + if len(self.chips) > 2: + print('Error, bot', self.number, 'has chips', self.chips) + elif len(self.chips) == 2: + low, high = min(self.chips), max(self.chips) - if low == '17' and high == '61': - print('responsible bot is bot', self.number) + if low == 17 and high == 61: + print('responsible bot is bot', self.number) + print('17 goes to', self.recipients['low']) + print('61 goes to', self.recipients['high']) - del self.chips[:] - self.give(low, self.recipients['low']) - self.give(high, self.recipients['high']) - -def handle_instruction(inst): - words = i.split() - bot_num = words[5] - value = words[1] - bots[bot_num].take(value) + del self.chips[:] + self.give(low, self.recipients['low']) + self.give(high, self.recipients['high']) with open('10.txt') as file: @@ -45,8 +44,9 @@ with open('10.txt') as file: get_instructions = [] bot_definitions = [] -outputs = collections.defaultdict(list) +xqueue = [] bots = {} +outputs = collections.defaultdict(list) for inst in instructions: if inst[0] == 'v': @@ -55,8 +55,17 @@ for inst in instructions: bot_definitions.append(inst) for definition in bot_definitions: - b = bot(definition) + b = robot(definition) bots[b.number] = b for i in get_instructions: - handle_instruction(i) \ No newline at end of file + words = i.split() + bot_num = words[5] + value = int(words[1]) + bots[bot_num].chips.append(value) + +bots['97'].execute() + +while xqueue: + current_bot = xqueue.pop(0) + current_bot.execute()