多くの古いGame Boyゲームでは、ユーザーからの文字列入力が必要になることがよくありました。しかし、キーボードはありませんでした。これは、次のような「キーボード画面」をユーザーに提示することで処理されました。
「文字ポインタ」は、ユーザが各所望の文字に移動なる文字Aで始まるであろうD-パッドの4つのボタン(UP
、DOWN
、LEFT
およびRIGHT
)を押しBUTTON A
、最終的な文字列に追加します。
ご注意ください:
- グリッドが回り込むので
UP
、文字Aを押しながら押すとTに移動します。 - 「文字ポインタ」は、文字を追加した後もそのままになります
チャレンジ
上記のキーボードには、大文字と小文字を変更するオプションがあり、不規則な形状です。そのため、簡単にするために、この課題では次のキーボードを使用します(右下はASCII文字32、スペースです)。
A B C D E F G
H I J K L M N
O P Q R S T U
V W X Y Z .
このようなキーボードでの入力は非常に遅いため、これを簡単にするために、与えられた文字列を入力するための最速の方法をユーザーに伝えるプログラムを書くことがタスクです。最速の方法が複数ある場合、表示する必要があるのは1つだけです。
出力キーは次のとおりです。
>
ためにRIGHT
<
ためにLEFT
^
ためにUP
v
ためにDOWN
.
forBUTTON A
(現在の文字を文字列に追加)
たとえば、文字列を指定するDENNIS
と、ソリューションは次のようになります。
>>>.>.>>v..>>.>>>v.
ルール/詳細
- グリッドが折り返されていることを覚えておいてください!
- 初期文字列を取得してソリューション文字列を生成する限り、完全なプログラムまたは関数を送信できます。出力が正しい限り、空白/末尾の改行は無関係です。
- 入力は、指定されたキーボードで入力可能な文字のみで構成されると想定できますが、空の場合もあります。
- これはcode-golfなので、最短のコードが優先されます。標準的なコードとゴルフの抜け穴が適用されます。
テストケース
通常、同じ長さのソリューションが複数あります。各テストケースについて、最適な長さと例が含まれています。回答に長さを印刷する必要はなく、解決策だけを印刷する必要があります。
FLP.TKC -> 25 steps: <<.<v.<<<v.<<<v.^.<<^.<^.
MOYLEX -> 23 steps: <<v.>>v.>>>v.>^^.^.<<^.
FEERSUM -> 18 steps: <<.<..<vv.>.>>.<^.
MEGO -> 14 steps: <<v.<^.>>.>vv.
A CAT -> 17 steps: .<^.>>>v.<<.<<vv.
BOB -> 10 steps: >.<vv.>^^.
(space) -> 3 steps: <^.
(empty) -> 0 steps: (empty)
repl.itでテストケースジェネレーターを表示できます-バグがある場合は通知してください。
提出してくれてありがとう!ユーザーngnは現在61バイトの勝者ですが、誰かがより短い解決策を見つけることができれば、小さな緑色のチェックマークを移動できます;)