| 
							- import itertools
 - import sys
 - 
 - from intcode import compute
 - 
 - 
 - '''
 - . . . . . . . . . . . . . . . . . .
 - 
 - . . . . . . . . . . . . . . . . . .
 - 
 - . . . . . . . . . . . . . . . . . .
 - 
 - . . . . . . . # . . . . . . . . . .
 -               |
 - . . . . . . @-@-#-# . . . . . . . .
 -                 |
 - . . . . . . . . C . . . . . . . . .
 -                 |
 - . . . . . . . @ @-@ . . . . . . . .
 -               | | |
 - . . . . . . #-#-# #w@w@ . . . . . .
 -                     | |
 - . . . . . . . . Pn@e# # . . . . . .
 -                 e
 - . . . . . . . . . . . . . . . . . .
 - 
 - . . . . . . . . . . . . . . . . . .
 - 
 - '''
 - 
 - text = sys.stdin.read()
 - 
 - code = '''
 - north
 - west
 - take mug
 - west
 - take easter egg
 - east
 - east
 - south
 - south
 - take asterisk
 - south
 - west
 - north
 - take jam
 - south
 - east
 - north
 - east
 - take klein bottle
 - south
 - west
 - take tambourine
 - west
 - take cake
 - east
 - south
 - east
 - take polygon
 - north
 - '''
 - 
 - bytes_ = list(code.lstrip().encode())
 - items = {line for line in code.splitlines() if line.startswith('take')}
 - combos = itertools.combinations(sorted(items), 4)
 - last_line = ''
 - history = ''
 - for c in map(chr, compute(text, iter(bytes_))):
 -     history += c
 -     if history.endswith('== Security Checkpoint =='):
 -         take = next(combos)
 -         drop = items.difference(take)
 -         instructions = '\n'.join(
 -             [line for line in take] +
 -             [line.replace('take', 'drop') for line in drop] +
 -             ['east\n']
 -         )
 -         bytes_.extend(instructions.encode())
 - print(history.splitlines()[-1])
 
 
  |