n, m = 4, 4

x, y, forward = 1, 1, 0


gameMap = [

  [1, 1, 1, 1],

  [1, 0, 0, 1],

  [1, 1, 0, 1],

  [1, 1, 1, 1,]

]


d = [(0, -1), (1, 0), (0, 1), (-1, 0)]


while(True):

  blocked = 0

  for _ in range(0, 4):

    tempx = x + d[forward][0]

    tempy = y + d[forward][1]

    if gameMap[tempx][tempy] == 1 or gameMap[tempx][tempy] == 2:

      if forward - 1 < 0:

        forward = 3

      else:

        forward -= 1 

      blocked = 1

      continue


    elif gameMap[tempx][tempy] == 0:

      gameMap[x][y] = 2

      x = tempx

      y = tempy

      blocked = 0

      break

  

  if blocked == 1:

    tempForward = abs(forward - 2)

    tempx = x + d[tempForward][0]

    tempy = y + d[tempForward][1]

    if gameMap[tempx][tempy] == 1:

      gameMap[x][y] = 2

      break

    else:

      gameMap[x][y] = 2

      x = tempx

      y = tempy


s = 0

for i in gameMap:

  s += i.count(2)

print(s)


댓글