小机器人行走
【问题】有一个小机器人放在地面上,它可以接受指令,进行转向和行走的动作。
‘L’ 表示左转90度。‘R’ 表示右转90度。‘100’ 表示向前走100cm。
先对小机器人的位置方位定义个直角坐标:
x 轴自西向东,y轴自北向南。
小机器人的初始位置为(0,0),并且它头朝北。
此时,如果给它一系列的指令,比如:100,L,R,15,R,R,6,17,25,L,L,17,26,15,R,L
求小机器人最后的位置坐标。
分析:
可以构造这样一个函数,接受当前状态和指令,返回新的状态。
状态可以定义为 (x,y,head), 用在三个整数分别表示机器人的当前坐标和头的朝向。
### 小机器人行走
def robotWalk(cmd):
def step(state,s): ## head=0 表示北,1表示西, ..
x,y,head = state
if s == 'L':
return (x, y, (head + 4 - 1) % 4)
if s == 'R':
return (x, y, (head