|
|
@ -1,3 +1,39 @@ |
|
|
|
|
|
|
|
gridVisited =[['#']] |
|
|
|
|
|
|
|
posHead = [0, 0] |
|
|
|
|
|
|
|
posTail = [] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# drawgrid only used for visualized debugging |
|
|
|
|
|
|
|
def drawGrid(): |
|
|
|
|
|
|
|
visualGrid = [] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for yCoord in range(len(gridVisited)): |
|
|
|
|
|
|
|
visualGridLine = [] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for xCoord in range(len(gridVisited[0])): |
|
|
|
|
|
|
|
if posHead[0] == yCoord and posHead[1] == xCoord: |
|
|
|
|
|
|
|
visualGridLine.append('H') |
|
|
|
|
|
|
|
continue |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
haveAppended = False |
|
|
|
|
|
|
|
for tp in range(9): |
|
|
|
|
|
|
|
if posTail[tp][0] == yCoord and posTail[tp][1] == xCoord: |
|
|
|
|
|
|
|
visualGridLine.append(str(tp+1)) |
|
|
|
|
|
|
|
haveAppended = True |
|
|
|
|
|
|
|
break |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not haveAppended: |
|
|
|
|
|
|
|
if gridVisited[yCoord][xCoord] == '#': |
|
|
|
|
|
|
|
visualGridLine.append('#') |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
visualGridLine.append('.') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
visualGrid.append(visualGridLine) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for ln in visualGrid: |
|
|
|
|
|
|
|
print("".join(ln)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
input("Ready for next move?") |
|
|
|
|
|
|
|
|
|
|
|
def expandGrid(direct): |
|
|
|
def expandGrid(direct): |
|
|
|
if direct == "U": |
|
|
|
if direct == "U": |
|
|
|
gridVisited.insert(0, []) |
|
|
|
gridVisited.insert(0, []) |
|
|
@ -31,6 +67,7 @@ def checkDist(): |
|
|
|
tempa = one[1] - two[1] |
|
|
|
tempa = one[1] - two[1] |
|
|
|
tempb = one[0] - two[0] |
|
|
|
tempb = one[0] - two[0] |
|
|
|
tempc = tempa + tempb |
|
|
|
tempc = tempa + tempb |
|
|
|
|
|
|
|
tempd = tempa * tempb |
|
|
|
if one[0] == two[0]: |
|
|
|
if one[0] == two[0]: |
|
|
|
if not(tempa == 1 or tempa == -1): |
|
|
|
if not(tempa == 1 or tempa == -1): |
|
|
|
if tempa > 0: |
|
|
|
if tempa > 0: |
|
|
@ -43,28 +80,28 @@ def checkDist(): |
|
|
|
posTail[z][0] += 1 |
|
|
|
posTail[z][0] += 1 |
|
|
|
elif tempb < 0: |
|
|
|
elif tempb < 0: |
|
|
|
posTail[z][0] -= 1 |
|
|
|
posTail[z][0] -= 1 |
|
|
|
elif (tempc == -1 or tempc == 1) and tempb < 0: |
|
|
|
elif (tempc in [-1, 0, 1]) and tempb < 0 and tempd != -1: |
|
|
|
posTail[z][0] -= 1 |
|
|
|
posTail[z][0] -= 1 |
|
|
|
posTail[z][1] += 1 |
|
|
|
posTail[z][1] += 1 |
|
|
|
elif tempc == 3: |
|
|
|
elif tempc in [3, 4]: |
|
|
|
posTail[z][0] += 1 |
|
|
|
posTail[z][0] += 1 |
|
|
|
posTail[z][1] += 1 |
|
|
|
posTail[z][1] += 1 |
|
|
|
elif (tempc == -1 or tempc == 1) and tempb > 0: |
|
|
|
elif (tempc in [-1, 0, 1]) and tempb > 0 and tempd != -1: |
|
|
|
posTail[z][0] += 1 |
|
|
|
posTail[z][0] += 1 |
|
|
|
posTail[z][1] -= 1 |
|
|
|
posTail[z][1] -= 1 |
|
|
|
elif tempc == -3: |
|
|
|
elif tempc in [-4, -3]: |
|
|
|
posTail[z][0] -= 1 |
|
|
|
posTail[z][0] -= 1 |
|
|
|
posTail[z][1] -= 1 |
|
|
|
posTail[z][1] -= 1 |
|
|
|
print(posTail[8]) |
|
|
|
|
|
|
|
|
|
|
|
# print(posTail[8]) |
|
|
|
gridVisited[posTail[8][0]][posTail[8][1]] = '#' |
|
|
|
gridVisited[posTail[8][0]][posTail[8][1]] = '#' |
|
|
|
|
|
|
|
|
|
|
|
gridVisited =[['#']] |
|
|
|
# drawGrid() |
|
|
|
posHead = [0, 0] |
|
|
|
|
|
|
|
posTail = [] |
|
|
|
for _ in range(9): |
|
|
|
for z in range(9): |
|
|
|
|
|
|
|
posTail.append([0,0]) |
|
|
|
posTail.append([0,0]) |
|
|
|
|
|
|
|
|
|
|
|
with open('in.txt','r') as f: |
|
|
|
with open('input9.txt','r') as f: |
|
|
|
inp = f.read().splitlines(keepends=False) |
|
|
|
inp = f.read().splitlines(keepends=False) |
|
|
|
|
|
|
|
|
|
|
|
direction = [] |
|
|
|
direction = [] |
|
|
|