2017 day 19, WIP
This commit is contained in:
parent
5cd65e1125
commit
b8ffad6c79
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
from enum import Enum, IntEnum
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
class Direction(Enum):
|
||||||
|
Up = (-1, 0)
|
||||||
|
Down = (1, 0)
|
||||||
|
Left = (0, -1)
|
||||||
|
Right = (0, 1)
|
||||||
|
|
||||||
|
|
||||||
|
class Character(Enum):
|
||||||
|
Void = ord(' ')
|
||||||
|
Vertical = ord('|')
|
||||||
|
Horizontal = ord('-')
|
||||||
|
Corner = ord('+')
|
||||||
|
Letter = -1
|
||||||
|
|
||||||
|
|
||||||
|
def parse_char(char):
|
||||||
|
try:
|
||||||
|
Character(char)
|
||||||
|
except:
|
||||||
|
assert chr(char).isalpha(), 'Unknown character {}'.format(chr(char))
|
||||||
|
return Character.Letter
|
||||||
|
|
||||||
|
|
||||||
|
class Packet(object):
|
||||||
|
|
||||||
|
def __init__(self, schema):
|
||||||
|
self.schema = np.array(map(lambda x: map(ord, x), schema))
|
||||||
|
self.x = 0
|
||||||
|
self.y = np.where(self.schema[0] == Character.Vertical.value)[0,0]
|
||||||
|
self.direction = Direction.Down
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __next__(self):
|
||||||
|
self.forward()
|
||||||
|
while self.current_char != Character.Letter:
|
||||||
|
self.forward()
|
||||||
|
return self.current_char
|
||||||
|
|
||||||
|
@property
|
||||||
|
def position(self):
|
||||||
|
return (self.x, self.y)
|
||||||
|
|
||||||
|
@position.setter
|
||||||
|
def set_position(self, value):
|
||||||
|
self.x, self.y = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def current_char(self):
|
||||||
|
return parse_char(self.schema[self.position])
|
||||||
|
|
||||||
|
def peek(self):
|
||||||
|
return parse_char(self.schema[self.position + self.direction.value])
|
||||||
|
|
||||||
|
def forward(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def main():
|
||||||
|
import fileinput
|
||||||
|
p = Packet(fileinput.input())
|
||||||
|
print(''.join(p))
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -0,0 +1 @@
|
||||||
|
numpy>=1.15
|
Loading…
Reference in New Issue