我猜你没有正确应用这个程序,不知道你在哪个ide下运行, Process finished with exit code 0就是告诉你进程执行完毕返回代码0,这个就是说没有错误运行完进程,说明至少没表面上的、语法上的错误。
这是个类,运行后不会有任何反应,需要实例化才能调用:>>> %Run test.py
>>> a=Solution()
>>> a.robotSim([1,-2,3,-1,2],[[2,3],[4,5],[6.7]])
9
这个程序是个机器人避障模拟程序,参数1是一组整数列表,是机器人移动指令,参数2是一组由若干两位整数的列表组成的列表,代表障碍坐标,返回值是一个整数。我吧我能看懂的部份做了注释,有点强迫症,把一个错误单词direction给改了一下:class Solution:
def robotSim(self, commands, ob):
"""
:type commands: List[int]
:type obstacles: List[List[int]]
:rtype: int
"""
origin = [0, 0] #原始位置
direction = 40 #圆形方向值,其实和0一样
result = 0 #返回结果
dx = [0, 1, 0, -1] #x轴移动方向
dy = [1, 0, -1, 0] #y轴移动方向
for i in commands:
if i == -1:
direction = (direction + 1) % 4 #-1表明调整方向为顺时针90°
elif i == -2:
direction = (direction - 1) % 4 #-2表明调整方向为逆时针90°
else:
d = direction % 4 #除4求模得到0,1,2,3代表走位
for j in range(i): #非-1-2表示步数
if [origin[0] + dx[d], origin[1] + dy[d]] in ob: #如果移动后的坐标在障碍表里,表明碰到障碍,退出本次循环,本步作废
break
origin = [origin[0] + dx[d], origin[1] + dy[d]] #进行一次移动,修改坐标
result = max(pow(origin[0], 2) + pow(origin[1], 2), result) #坐标的平方和?看不懂!和上一轮result值比较取较大值
return result
|