贪吃蛇
标题:贪吃蛇 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
贪吃蛇是一个经典游戏,蛇的身体由若干方格连接而成,身体随蛇头移动。蛇头触碰到食物时,蛇的长度会增加一格。蛇头和身体的任一方格或者游戏版图边界碰撞时,游戏结束。
下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == 'H',表示该方格为贪吃蛇的起始位置;若arr[i][j] == 'F',表示该方格为食物,若arr[i][j] == 'E',表示该方格为空格。
下面让我们来完成贪吃蛇游戏的模拟。给定一个N*M的数组arr,代表N*M个方格组成的版图,贪吃蛇每次移动一个方格。若arr[i][j] == 'H',表示该方格为贪吃蛇的起始位置;若arr[i][j] == 'F',表示该方格为食物,若arr[i][j] == 'E',表示该方格为空格。
贪吃蛇初始长度为1,初始移动方向为向左。为给定一系列贪吃蛇的移动操作,返回操作后蛇的长度,如果在操作执行完之前已经游戏结束,返回游戏结束时蛇的长度。
while True: try: orders = input().split() n, m = map(int, input().split()) if n == 0&nbs***bsp;m == 0: print(0) continue grid = [input().split() for _ in range(n)] x, y = 0, 0 for i in range(n): for j in range(m): if grid[i][j] == "H": x, y = i, j break res, command = 1, "L" for order in orders: ref = {"U": [-1, 0], "D": [1, 0], "L": [0, -1], "R": [0, 1]} if order == "G": if command in ref: dx, dy = ref[command] x, y = x + dx, y + dy if x < 0&nbs***bsp;x >= n&nbs***bsp;y < 0&nbs***bsp;y >= m&nbs***bsp;grid[x][y] == "S": break if grid[x][y] == "F": res += 1 grid[x][y] = "S" else: command = order print(res) except: break