Ai
1 Star 2 Fork 5

LilithSangreal/LeetCode-Solutions

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
design-snake-game.py 2.04 KB
一键复制 编辑 原始数据 按行查看 历史
Allen Liu 提交于 2018-10-13 01:56 +08:00 . add complexity
# Time: O(1) per move
# Space: O(s), s is the current length of the snake.
from collections import defaultdict, deque
class SnakeGame(object):
def __init__(self, width,height,food):
"""
Initialize your data structure here.
@param width - screen width
@param height - screen height
@param food - A list of food positions
E.g food = [[1,1], [1,0]] means the first food is positioned at [1,1], the second is at [1,0].
:type width: int
:type height: int
:type food: List[List[int]]
"""
self.__width = width
self.__height = height
self.__score = 0
self.__food = deque(food)
self.__snake = deque([(0, 0)])
self.__direction = {"U": (-1, 0), "L": (0, -1), "R": (0, 1), "D": (1, 0)}
self.__lookup = defaultdict(int)
self.__lookup[(0, 0)] += 1
def move(self, direction):
"""
Moves the snake.
@param direction - 'U' = Up, 'L' = Left, 'R' = Right, 'D' = Down
@return The game's score after the move. Return -1 if game over.
Game over when snake crosses the screen boundary or bites its body.
:type direction: str
:rtype: int
"""
def valid(x, y):
return 0 <= x < self.__height and \
0 <= y < self.__width and \
(x, y) not in self.__lookup
d = self.__direction[direction]
x, y = self.__snake[-1][0] + d[0], self.__snake[-1][1] + d[1]
tail = self.__snake[-1]
self.__lookup[self.__snake[0]] -= 1
if self.__lookup[self.__snake[0]] == 0:
self.__lookup.pop(self.__snake[0])
self.__snake.popleft()
if not valid(x, y):
return -1
elif self.__food and (self.__food[0][0], self.__food[0][1]) == (x, y):
self.__score += 1
self.__food.popleft()
self.__snake.appendleft(tail)
self.__lookup[tail] += 1
self.__snake += (x, y),
self.__lookup[(x, y)] += 1
return self.__score
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LilithSangreal/LeetCode-Solutions.git
git@gitee.com:LilithSangreal/LeetCode-Solutions.git
LilithSangreal
LeetCode-Solutions
LeetCode-Solutions
master

搜索帮助