python-3.x - 如何使用四个基本方向找到返回起点的最小步数
问题描述
我做了一个在线测试,但我无法理解其中一个问题:想象一下,有一个机器人只能沿着北、南、西、东 4 个基本方向移动。将命令传递为“N”、“S”、“W”或“E”,每个命令对应一个步骤。问题是关于编写一个函数,该函数返回将机器人返回到起始位置所需的最少步数。例如,传递命令“NW”,返回值应该是2。传递命令“NWS”,返回值1等等。如果机器人发现自己已经在起始位置,则返回值将为 0(或表示“起始位置”的字符串)。
这个问题应该是针对初学者的,但老实说,我很难解决它。如果有人知道如何编写这样的程序,将不胜感激。谢谢。
解决方案
state-machine
您可以使用复数模拟 a (使用格式a+bj
,其中j
是 -1 的平方根)。
1) 开始start_val = 0
2) 将坐标与复杂操作关联:
N
和+1
S
和-1
E
和+j
W
和-j
3) 然后处理给定的字符串,将每个字符一个一个地映射到 上start_val
。例如:
- 给定字符串“NW”,程序将计算:
start_val += 1
start_val -= j
- 然后
start_val = 1+1j
- 给定字符串“NWS”,程序将计算:
start_val += 1
start_val += j
start_val -= 1
- 然后
start_val = 0-1j
4) 之后,将 的实部和虚部相加。在上面的示例中,结果分别为 2 和 1。你能看到吗?start_val
我希望这可以作为您的解决方案。
推荐阅读
- php - 插入所有下拉项时显示消息
- python - Pandas:向现有数据框添加新行,在所有列中保持相同的分布
- video - 如何在 Raspberry Pi 上的 chromium 上更流畅地运行视频?
- android - 在 Android 中使用 Facebook 登录时出错
- sql - 错误:- 传递给 LEFT 或 SUBSTRING 函数的长度参数无效
- vb.net - .net 中我的 teechart 图上显示的网格线
- php - 根据视图中的id从数据库中获取数据:Codeigniter
- uwp - 用于桌面应用程序的 Windows 10 上的注视输入
- php - 如何在 laravel 5.6 中修复图像输入值“null”?
- unit-testing - 如何在Grails 2单元测试中获取spring security提供的currentUser