48 lines
975 B
Python
48 lines
975 B
Python
#!/usr/bin/python
|
|
|
|
|
|
def read_file(filename, chunk=1024):
|
|
file = open(filename, 'r')
|
|
while True:
|
|
line = file.read(chunk)
|
|
if not line:
|
|
break
|
|
yield line
|
|
|
|
|
|
def getFloorPlanKey(posX, posY):
|
|
return "%dx%d" % (posX, posY)
|
|
|
|
|
|
def moveSanta(posX, posY, direction):
|
|
if direction == '>':
|
|
posX = posX + 1
|
|
if direction == '<':
|
|
posX = posX - 1
|
|
if direction == '^':
|
|
posY = posY + 1
|
|
if direction == 'v':
|
|
posY = posY - 1
|
|
return (posX, posY)
|
|
|
|
|
|
def main():
|
|
posX = 0
|
|
posY = 0
|
|
houses = 1
|
|
floorPlan = dict()
|
|
floorPlan[getFloorPlanKey(0, 0)] = 1
|
|
|
|
for line in read_file('input', 1):
|
|
(posX, posY) = moveSanta(posX, posY, line[0])
|
|
key = getFloorPlanKey(posX, posY)
|
|
|
|
if key not in floorPlan:
|
|
houses = houses + 1
|
|
floorPlan[key] = 0
|
|
floorPlan[key] = floorPlan[key] + 1
|
|
print houses
|
|
|
|
if __name__ == "__main__":
|
|
main()
|