前書き
誰もが小惑星フィールドをうまくナビゲートする可能性は約3,720対1であることを知っています。しかし、あなたの警告にもかかわらず、ハン・ソロはまだ彼の運を試してみようとしています。
人工生命を恐れて、船の固有の方言(お好みのCode Golf言語)で、小惑星野ASCII迷路をどの経路で進むかを決定する小惑星回避プログラムをコーディングすることにします。
入力
ミレニアムファルコンには、これに似たデータを提供する小惑星フィールドマッピングプログラムがあります。
|   #####           #########  |
| ######  #          ###   #   |
|   # #  #  #  ####   #        |
@              ##    ####       
|#   #   #       ###   ##      |
|##      ##      ####   #  #   |
|####           ##### #   ##   |
一番上の行はファルコンの左、一番下の行はファルコンの右、そして列は船の前にあるものを表します。
- それぞれ
#が障害です。 - 各スペースは、船が飛行できる空のスペースです。
 - 入力の高さは常に7文字です。これは、小惑星のマッピング幅の制限です。
 - 入力は常に32文字です(フィールド自体は30文字、開始と終了の制限は2文字)。これは、小惑星のマッピング深度の制限です。垂直バー
|は、マッピングの開始と終了を示します。 @ファルコンです。入力の中央の行(4行目)と最初の列に常にあります。- 最後の列の垂直バーに残されたスペースは、船が到着しなければならない場所です。入力の中央の行(4行目)と最後の列に常にあります。
 
入力は、複数行の文字列、文字列の配列、STDINまたは関数パラメータから取得するか、ファイルから読み取ることができます。
可能な操作
あなたはTIEファイターに追われているため、常に前進しなければなりません。したがって、船が各ステップで飛行できる方法は3つあります。
-進む/前進して左に曲がる\前進して右折
たとえば、これらは有効なパスです。
@---
  --
 /  \ /
@    -
   -
  / \
 /   \
@     \
ご覧のとおり、列ごとに常に1つの動きがあります。ファルコンはジャンクの一部であるため、暴力的なターンを行うことはできません。/\またはのような移動\/は許可されません。-向かい合う2つのターンの間には、少なくとも1つの純粋な前進がなければなりません。一方、上記のように、複数のステップを一方向に回すことも可能です。
ファルコンは、1回の動きで船が障害物のある場所にくるとクラッシュします。たとえば、これらの動きはクラッシュにつながります。
@-#
@
 \
  #
  #
 /
@
これはクラッシュではないことに注意してください。
@-#
  \
   -
出力
最後の有効なパスを使用して、同じ小惑星フィールドASCIIを出力する必要があります。ファルコンは、開始点ではなく終了点に印刷する必要があります。
たとえば、前述の入力例の有効な出力は次のとおりです。
|   #####           #########  |
| ######  #--------  ###   #   |
|   # #  #/ #  ####\  #        |
 ---------      ##  \ #### ----@
|#   #   #       ### \ ## /    |
|##      ##      #### \ #/ #   |
|####           ##### #-- ##   |
あなたの道はハヤブサをクラッシュさせないことだけが必要です。最短のパスである必要はありません。
常に、少なくとも1つの可能な最後までのパスがあると想定できます。
小惑星フィールドがこの投稿とまったく同じように印刷される限り、ファイルまたは同等のものでSTDOUTに出力できます(たとえば、パスの座標リストの出力は無効です)。
テストケース
通常の小惑星フィールド
| ##### ######### | | ###### # ### # | | # # # # #### # | @ ## #### |# # # ### ## | |## ## #### # # | |#### ##### # ## |可能な出力
| ##### ######### | | ###### #-------- ### # | | # # #/ # ####\ # | --------- ## \ #### ----@ |# # # ### \ ## / | |## ## #### \ #/ # | |#### ##### #-- ## |超規則的な小惑星フィールド
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | @ # # # # # # # # # # # # # # |# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # |可能な出力
|# # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # #| |# # # # # # # # # # # # # # # | -# #-# #-# #-# #-# #-# #-# #--@ |#\#/#\#/#\#/#\#/#\#/#\#/#\#/# | | #-# #-# #-# #-# #-# #-# #-# #| |# # # # # # # # # # # # # # # |デススターの核
| # # # # | | # # # | | # # # # # | @ # # # # # | # # # # | | # # # # # | | # # # # |可能な出力
| # # # -- # | | --- # # / #\ - | | / #\ # # / # \ /#\ | - # \ # #/ # - # ----@ | # \ # ---- # # | | # \#/ # # # | | # - # # # |デススタートレンチ
|##############################| |##############################| |##############################| @ |##############################| |##############################| |##############################|出力
|##############################| |##############################| |##############################| ------------------------------@ |##############################| |##############################| |##############################|小惑星の洞窟
|### ##########################| |## # ############### ## ######| |# ### ######## ### ## # #####| @ ###### ###### ### ## ### |######## ### ### ## #########| |########## # ### ## ##########| |########### #####|可能な出力
|###-##########################| |##/#\############### ##-######| |#/###--######## ### ##/#\#####| -######\###### ### ##/###-----@ |########--### ### ##/#########| |##########\# ### ##/##########| |###########-------- #####|
得点
R2D2は沼地で泳いでいるので忙しいので、ファルコンのコントローラーを自分でプログラムする必要がありますが、これは退屈です。したがって、最短のコードが優先されます。
-各ターンのパスにあり、これは「前進」の動きとして定義されています。しかし、実際の動きは常に2つの斜め左とそれに続く2つの斜め右です。