first commit
This commit is contained in:
61
03/part2.py
Normal file
61
03/part2.py
Normal file
@ -0,0 +1,61 @@
|
||||
#!/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():
|
||||
posX1 = 0
|
||||
posY1 = 0
|
||||
posX2 = 0
|
||||
posY2 = 0
|
||||
houses = 1
|
||||
floorPlan = dict()
|
||||
floorPlan[getFloorPlanKey(0, 0)] = 1
|
||||
|
||||
for line in read_file('input', 2):
|
||||
|
||||
(posX1, posY1) = moveSanta(posX1, posY1, line[0])
|
||||
key1 = getFloorPlanKey(posX1, posY1)
|
||||
if key1 not in floorPlan:
|
||||
houses = houses + 1
|
||||
floorPlan[key1] = 0
|
||||
floorPlan[key1] = floorPlan[key1] + 1
|
||||
|
||||
if len(line) < 2:
|
||||
break
|
||||
|
||||
(posX2, posY2) = moveSanta(posX2, posY2, line[1])
|
||||
key2 = getFloorPlanKey(posX2, posY2)
|
||||
|
||||
if key2 not in floorPlan:
|
||||
houses = houses + 1
|
||||
floorPlan[key2] = 0
|
||||
floorPlan[key2] = floorPlan[key2] + 1
|
||||
|
||||
print houses
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user