2017-08-31 4 views
0

私はHackerRankで人工知能のトラックをやっていますが、私はこの種のプログラムを初めて実行します。最初のプログラムでA.I:できるだけ少数のステップでプリンセスを見つけよう

https://www.hackerrank.com/challenges/saveprincess/problem、私は次の操作を実行する必要があります。

ピーチ姫は、正方形の格子の四隅のいずれかに閉じ込められています。 グリッドの中心にあり、 のいずれかの方向に一度に1ステップ移動できます。あなたはプリンセスを救うことができますか?

入力フォーマット

最初の行は、グリッドの サイズを示す奇数の整数N(3 < = N < 100)を含みます。これにNxNグリッドが続きます。各セルは で、 ' - '(ascii値:45)と表示されます。ボットの位置は「m」 で、プリンセスの位置は「p」で示されています。

グリッドは、マトリックス条約

出力フォーマットにあなたが一度に姫を救出するのにかかる移動アウト

印刷を使用して索引付けされます。 移動は、改行である '\ n'で区切る必要があります。有効な移動は、 LEFTまたはRIGHTまたはUPまたはDOWNです。

このような問題ではどうすればよいですか?

隅に移動して王女がいるかどうかを確認してください。そうでない場合は、別のコーナーに移動しますか?

ここでの目標は、できるだけ少ないステップで行うことですが、私が運が良ければ、私が移動する最初のコーナーでプリンセスを見つけた場合にのみ起こると思います。

私はプリンセスが移動する前に移動しているかどうかを確認できたと思っていますが、この問題で許可されているかどうかはわかりません。

答えて

1

入力フォーマット(強調鉱山)の説明を読む

はこれはN×Nのグリッドが続きます。各セルは ' - '(ascii値:45)で示されます。ボットの位置は 'm'で表され、プリンセスの位置は 'p'で示されます。

王女がそこにいるかどうかを確認するために実際に各コーナーに行く必要はありません、あなたはすでに彼女がどこにいるか知っています!ロボットmとプリンセスpが入っている細胞の位置の違いを確認し、そのような動きを印刷してください。たとえば、差が2で、x-1yの場合は、right right upになる可能性があります。

0

どのような退屈な問題...真剣に。

  1. グリッドサイズから始めて、入力データにロードします。
  2. グリッドサイズに対応する入力行を受け入れます。。のpythonの7行で
  3. あなたはグリッドが正方形であることを知っているので、コーナーをチェックして、斜めの王女がであるもののコーナーに対応する移動が

ソリューション:

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)) 
関連する問題