-
Notifications
You must be signed in to change notification settings - Fork 116
/
Walking Robot Simulation II.py
38 lines (27 loc) · 1.2 KB
/
Walking Robot Simulation II.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Robot:
def __init__(self, width: int, height: int):
self.perimeter = 2*width + 2*(height - 2)
self.pos = 0
self.atStart = True
self.bottomRight = width - 1
self.topRight = self.bottomRight + (height - 1)
self.topLeft = self.topRight + (width - 1)
def step(self, num: int) -> None:
self.atStart = False
self.pos = (self.pos + num) % self.perimeter
def getPos(self) -> List[int]:
if 0 <= self.pos <= self.bottomRight:
return [self.pos, 0]
if self.bottomRight < self.pos <= self.topRight:
return [self.bottomRight, self.pos - self.bottomRight]
if self.topRight < self.pos <= self.topLeft:
return [self.bottomRight - (self.pos - self.topRight), self.topRight - self.bottomRight]
return [0, self.topRight - self.bottomRight - (self.pos - self.topLeft)]
def getDir(self) -> str:
if self.atStart or 0 < self.pos <= self.bottomRight:
return 'East'
if self.bottomRight < self.pos <= self.topRight:
return 'North'
if self.topRight < self.pos <= self.topLeft:
return 'West'
return 'Sout