我正在HackerRank做一个人工智能跟踪,这是我第一次做这类程序。
在第一个程序https://www.hackerrank.com/challenges/saveprincess/problem上,我必须执行以下操作:
桃子公主被困在方格的四个角中的一个角落里。 您位于网格的中心,可以一次移动一步 四个方向中的任何一个。你能救出公主吗?
输入格式
第一行包含表示的奇数N(3 <= N <100) 网格的大小。接下来是NxN网格。每个细胞都是 用' - '表示(ascii值:45)。机器人位置用'm'表示 公主的位置用'p'表示。
使用Matrix Convention
索引网格输出格式
打印出您将一次性拯救公主的动作。 移动必须用'\ n'分隔,换行符。有效的举措是 左或右或上或下。
在这些问题上我该怎么做?
移到一个角落并检查公主是否在那里,而不是,移到另一个角落?
这里的目标是在尽可能少的步骤中完成,但我认为只有在我很幸运的情况下才会发生这种情况,并且我会在我移动的第一个角落找到公主。
我原以为我可以检查公主是否是我要移动的角落,但我不知道是否允许这个问题。
答案 0 :(得分:1)
阅读输入格式的说明(强调我的):
接下来是NxN网格。每个单元格用' - '表示(ascii值:45)。机器人位置用'm'表示,用公主位置用'p'表示。
你不必去每个角落看看公主是否在那里,你已经知道她在哪里了!只需确定包含机器人m
和公主p
的单元格的位置差异,然后打印出一致的动作。例如,如果2
以及x
和-1
方向的差异为y
,您可能会right right up
。
答案 1 :(得分:0)
真是个无聊的问题......说真的。
7行python中的解决方案:
gridsize = int(input('Enter number of rows: '))
grid = [ input('Enter row: ') for r in range(gridsize) ]
move_dist = (gridsize-1)//2
if grid[ 0][ 0] == 'p': print('\n'.join([ 'UP\nLEFT'] * move_dist))
elif grid[ 0][-1] == 'p': print('\n'.join([ 'UP\nRIGHT'] * move_dist))
elif grid[-1][ 0] == 'p': print('\n'.join([ 'DOWN\nLEFT'] * move_dist))
elif grid[-1][-1] == 'p': print('\n'.join(['DOWN\nRIGHT'] * move_dist))