または、それは実際には迷路ではありませんが、それでもです。
ルール:
入力は、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
。(1
3番目の位置にジャンプするため)。ここでは、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
、最初の行の前から始めて、一歩先に進み、迷路を終えると、出力はであるはずだと思います...