前書き:
もともとオランダ語の歌が頭にありましたが、歌詞は次のとおりです:「Doe 'n stapje naar voren、en' n stapje terug」(これは「少し前へ、少し後ろへ」と訳されています)完全な歌詞を検索しましたが、歌詞が前後に移動するだけで、決して横にならないことに気付きました。
だから、代わりにこの挑戦のためにMr C The Slide Man別名DJ Casper-Cha-Cha Slideの歌詞を使うようになりました。
他のすべてを無視し、言及された量を含む「左」、「右」、「戻る」、および「ホップ」(「ホップ」を前方としてカウントしました)の単語だけを見ると、完全な歌には次のリストがあります(私はここで略語LRBHを使用しています):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
ここでは、スペースを節約するために隠されたJavaScriptコードスニペットで完全な曲の歌詞が表示されます。ここでは、動きと量がブロックされた括弧で囲まれています。
チャレンジ:
さて、挑戦そのものに。1つ、2つ、または3つの入力を取ります†。それらの1つは、インデックス整数のリストです(したがって、0インデックスの場合は非負、1インデックスの場合は正)。(他の入力はオプションであり、チャレンジルールで説明されています。)
すべてのテストケースは位置から始まり{x=0, y=0}
ます。
次に、移動の歌詞リストを使用し、入力リストの指定されたインデックスにあるすべての移動を削除します。次に、移動(入力配列の最大のインデックスまで)を「ウォーク」し、最終的な位置を出力します。
動きは次のように座標を変更します:
- R
:x+1
- L
:x-1
- H
:y+1
- B
:y-1
チャレンジルール:
- 移動リストには、好きな方法でアクセスできます。†:追加の入力にすることができます。読み込むディスク上の個別のファイルに入れることができます。アクセスするクラスレベルの変数に入れることができます。これは、の形でなければならないだろう
L
、R
、B
及びH
(文字列または文字リスト/配列することができます)しかし、として移動リスト保存しないことができますので、1
sおよび-1
s以上の整数。 - 上記のmoves-listはハードコーディングされており、常に同じです。(これが回答のバイト数に役立つ場合は、入力として受け取るのではなく、クラスレベルのフィールドとして置くのが良い理由でもあります。)
- 入力リストには、0インデックスまたは1インデックスの両方を使用できます(任意)
- リストの最大のインデックスまでの移動を除外します。
- †:入力配列の最後のアイテムの代わりに、この最後のアイテムを整数で区切って入力することもできます。
- 最終的なx座標とy座標の出力は、任意の妥当な形式(2つのアイテムを含む整数配列、区切り文字列、2行に分かれてSTDOUTに出力されるなど)になります。
- input-listは最低から最高に並べ替えられていると想定できます(それが望ましい場合は最高から最低に並べ替えられます。この場合、最初の項目はmoves-listの初期サイズです-別の入力として受け取られない場合)。また、重複したインデックスも含まれません。
- 入力リストの最大インデックスが上記の移動リストよりも大きい場合(55個の移動は上記の移動リストにあります)、リストの先頭に再び折り返します(最大のインデックスに応じて必要な回数)入力の)。
- の
y,x
代わりに出力することが許可されていますがx,y
、そうする場合は回答でこれを指定してください。
例:
入力: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
ここでは、移動と(0から始まる)インデックスが互いに上にあります。
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
L, B, H, R, L, L, B, H, R, L, B, H, H, R, R, L, L, L, R, L, B, H, H, H, H, R, R, L, L, L, B, H, H, H, H, H, R, L, R, L, R, L, H, R, L, L, B, H, H, L, R, L, B, H, H, L, B, H, R, L, L, B, H, R, L
入力リストのインデックスを削除すると、次のmoves-listが残ります。
1, 2, 3, 5, 6, 7, 9,11,12,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,45,46,47,48,49,51,52,54,55,57,58,61,62,63
B, H, R, L, B, H, L, H, H, L, L, L, R, L, B, H, H, H, H, R, R, L, L, B, H, H, H, H, R, L, R, L, R, L, L, B, H, H, L, L, B, H, L, H, R, B, H, R
これで{0, 0}
、残りの動きの上を歩いていくと、動きごとに次の新しい座標が得られます。
{0,0};B,{0,-1};H,{0,0};R,{1,0};L,{0,0};B,{0,-1};H,{0,0};L,{-1,0};H,{-1,1};H,{-1,2};L,{-2,2};L,{-3,2};L,{-4,2};R,{-3,2};L,{-4,2};B,{-4,1};H,{-4,2};H,{-4,3};H,{-4,3};H,{-4,5};R,{-3,5};R,{-2,5};L,{-3,5};L,{-4,5};B,{-4,4};H,{-4,5};H,{-4,6};H,{-4,7};H,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};L,{-5,8};B,{-5,7};H,{-5,8};H,{-5,9};L,{-6,9};L,{-7,9};B,{-7,8};H,{-7,9};L,{-8,9};H,{-8,10};R,{-7,10};B,{-7,9};H,{-7,10};R,{-6,10}
したがって、最終的な出力は次のようになります。 {-6, 10}
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、非コードゴルフ言語で回答を投稿することを妨げないでください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - 回答には標準の規則が適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを持つ関数/メソッドの使用が許可されます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンクを追加してください。
- また、回答の説明を追加することを強くお勧めします。
テストケース:
0-indexed input: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
1-indexed input: [1,5,9,11,14,15,28,35,43,44,45,51,54,57,60,61,65]
Output: {-6, 10}
0-indexed input: [55] (Note: There are 55 moves in the unmodified list)
1-indexed input: [56] (Note: There are 55 moves in the unmodified list)
Output: {-6, 11}
0-indexed input: [0,1,4,5,6,9,10,15,16,17,19,20,27,29,30,37,38,39,41,44,45,46,49,51,52]
1-indexed input: [1,2,5,6,7,10,11,16,17,18,20,21,28,30,31,38,39,40,42,45,46,47,50,52,53]
Output: {10, 16}
0-indexed input: [2,3,7,8,11,12,13,14,18,21,22,23,24,25,26,31,32,33,34,35,36,38,40,42,43,47,48,50,53]
1-indexed input: [3,4,8,9,12,13,14,15,19,22,23,24,25,26,27,32,33,34,35,36,37,39,41,43,44,48,49,51,54]
Output: {-18, -7}
0-indexed input: [0]
1-indexed input: [1]
Output: {0, 0}
0-indexed input: [4,6,7,11,12,13,15,17,20,28,31,36,40,51,59,66,73,74,80,89,92,112,113,114,116,120,122,125,129,134,136,140,145,156,161,162,165,169,171,175,176,178,187,191,200]
1-indexed input: [5,7,8,12,13,14,16,18,21,29,32,37,41,52,60,67,74,75,81,90,93,113,114,115,117,121,123,126,130,135,137,141,146,157,162,163,166,170,172,176,177,179,188,192,201]
Output: {-17, 37}
0-indexed input: [25,50,75,100,125,150,175,200,225,250]
1-indexed input: [26,51,76,101,126,151,176,201,226,251]
Output: {-28, 49}