または、それは実際には迷路ではありませんが、それでもです。
ルール:
入力は、2行の文字列で構成される
*、1、xとX。そのひもは通り抜ける迷路です。行の長さは同じです。入力を
,(カンマ)を含む文字列またはこれらの2行の間の任意の便利な区切り文字として受け取ることができます。または、両方の行を関数の個別の引数として使用できます。出力は、文字列を終了するために必要な手順の数です(最後の手順は、文字列から移動する手順です)。
最初のシンボルの前の左上隅(上の行)から開始します。
各ステップで、1シンボルずつ(n番目から(n + 1)番目の位置まで)移動します。次に、踏んだキャラクターに応じて、結果は異なります。各文字の機能は次のとおりです。
*-何もない。普通に踏むだけです。x-踏んだら、ラインを切り替えますが、最初から同じ水平距離を保ちます。たとえば、上の行の3番目の位置に足を踏み、xここで小文字に遭遇しました。次に、すぐに下の行に移動しますが、再び3番目の位置に移動します。X-行を切り替えて、次の位置に移動します。この例は同じですが、3番目から4番目の位置に移動します(したがって、2番目の行の4番目の位置にいます)。1-ちょうど別の位置で前進します。
各キャラクターが仕事をすると、スペースに置き換えられ、「機能」しなくなります。
次に例を示します。
入力:
x *前述のように、最初の行の最初のシンボルの前から開始します。最初のステップでは、文字に移動し
x、この文字は、2行目に切り替えます。文字xはもはや機能しませんxが、で置き換えられ*ます。これは、後者の例でより関連します。あなたは今、下の行のアスタリスクにいて、それはあなたに何もしませんでした。2番目のステップは前方への移動であり、ストリングを終了するため、ラビリンスは完了し、2ステップかかりました。
出力
2。入力:
xX* x1*最初のステップ:
xに進みますx。これにより、下の行に移動します。ここに、使用された文字がアスタリスクに置き換えられるというルールがあります。その後、最初の行に戻りますxが、使用されてアスタリスクになったため、もう行はありません。したがって、このアスタリスク上を安全に移動し、ステップが完了しました(最初の行の最初の位置にいます)。2番目のステップ:上に移動
Xすると、下の行に移動し、次に前方に移動します。2行目の3番目の位置(アスタリスク)に常駐し、2番目の位置(を含む1)には一度もアクセスしたことがありません。3番目のステップ:前方に移動して、文字列を終了します。
出力:
3。
テストケース:
入力:
*1* xxx出力:
3。(13番目の位置にジャンプするため)。ここでは、2行目にアクセスすることはありませんが、入力の必須部分です。入力:
*X*1*x x*1xx*出力:
4。入力:
1x1x ***X出力:
3。入力:
1*x1xxx1*x x*x1*11X1x出力:
6。入力:
xXXXxxx111* **xxx11*xxx出力:
6。
"\n\n"は2行の文字列です
1、最初の行の前から始めて、一歩先に進み、迷路を終えると、出力はであるはずだと思います...