介绍:
虽然我本来是脑中有一首荷兰歌,但歌词是:“ Doe'n stapje naar voren,en'n stapje terug ”(译为“ 向前走一点,向后走一点 ”),当我搜索了完整的歌词,我意识到它们只是来回晃来晃去,从不侧身。
因此,我现在改用C幻灯片先生(又名DJ Casper-Cha-Cha Slide)的歌词来应对这一挑战。
如果我们忽略所有其他内容,仅查看包括上述金额在内的单词“ left”,“ right”,“ back”和“ hop”(我将“ hop”算作正向),则整首歌曲将具有以下列表(我在这里使用缩写LRBH):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
这是可隐藏的JavaScript代码段中的完整歌曲歌词(以节省空间),其中的移动和金额都用方括号括起来:
挑战:
现在进入挑战本身。我们接受一个,两个或三个输入†。其中一个是索引整数列表(因此对于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或整数。 - 上面给出的移动列表是硬编码的,并且将始终相同。(这也是为什么可以将它作为类级字段而不是将其作为输入的原因,如果这有助于回答的字节数。)
- 输入列表可以是0索引或1索引(由您决定)
- 我们仅“步行”到达列表的最大索引并排除该列表的最大索引。
- †:还允许您将此最后一项作为单独的整数输入,而不是输入数组的最后一项。
- 我们最终得到的x和y坐标的输出可以是任何合理的格式(包含两个项目的整数数组,定界字符串,在两行上打印到STDOUT等)
- 您可以假设输入列表从最低到最高(如果您愿意的话,从最高到最低)进行排序,在这种情况下,第一项是移动列表的初始大小-如果不作为单独的输入的话。而且它也不会包含任何重复的索引。
- 如果输入列表的最大索引大于上面的移动列表(上面的移动列表中有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
除去输入列表的索引,我们将剩下以下移动列表:
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}
通用规则:
- 这是代码高尔夫球,因此最短答案以字节为单位。
不要让代码高尔夫球语言阻止您使用非代码高尔夫球语言发布答案。尝试针对“任何”编程语言提出尽可能简短的答案。 - 标准规则适用于您的答案,因此允许您使用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}