Introducción:
Aunque originalmente tenía una canción holandesa en mi cabeza, donde están las letras: " Doe 'n stapje naar voren, en' n stapje terug " (que se tradujo como " Da un pequeño paso adelante y un poco atrás "), cuando Busqué la letra completa, me di cuenta de que solo iban y venían, y nunca de lado.
Entonces, en cambio, ahora uso la letra de Mr C The Slide Man, también conocido como DJ Casper - Cha-Cha Slide para este desafío.
Si ignoramos todo lo demás y solo miramos las palabras "izquierda", "derecha", "atrás" y "salto" (conté "salto" como adelante), incluidas las cantidades mencionadas, la canción completa tendrá la siguiente lista ( Estoy usando las abreviaturas LRBH aquí):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
Aquí la letra de la canción completa en un fragmento de código JavaScript ocultable (para ahorrar espacio), donde los movimientos y las cantidades están rodeados de paréntesis bloqueados:
Desafío:
Ahora en el desafío en sí. Tomamos una, dos o tres entradas † . Uno de ellos es una lista de enteros de índice (por lo tanto, no es negativo para 0 indexado o positivo para 1 indexado). (Las otras entradas son opcionales y se explican en las reglas de desafío).
Cada caso de prueba comenzará en una posición {x=0, y=0}
.
Ahora use la lista de letras de movimientos y elimine todos los movimientos en los índices dados de la lista de entrada. Luego 'camine' sobre los movimientos (hasta el índice más grande de la matriz de entrada) y genere la posición en la que terminará.
Los movimientos cambiarán las coordenadas de la siguiente manera:
- R
: x+1
- L
: x-1
- H
: y+1
- B
:y-1
Reglas de desafío:
- Se puede acceder a la lista de movimientos de la forma que desee. †: puede ser una entrada adicional; puede estar en un archivo separado en el disco del que leerá; puede estar en una variable de nivel de clase a la que accede. Tendrá que ser en forma de
L
,R
,B
yH
aunque (puede ser una cadena o un personaje-list / matriz), por lo que no puede guardar la lista como se mueve-1
s y-1
s o enteros. - La lista de movimientos dada anteriormente está codificada y siempre será la misma. (Por eso también está bien ponerlo como un campo de nivel de clase en lugar de tomarlo como entrada si esto ayuda al conteo de bytes de su respuesta).
- La lista de entrada puede ser indexada 0 o indexada 1 (depende de usted)
- Solo 'caminamos' los movimientos hasta y excluyendo el índice más grande de la lista.
- †: También puede tomar este último elemento como entrada entera separada, en lugar del último elemento de la matriz de entrada.
- La salida de las coordenadas x e y en las que terminamos puede estar en cualquier formato razonable (matriz entera que contiene dos elementos, cadena delimitada, impresa en STDOUT en dos líneas separadas, etc.)
- Puede suponer que la lista de entrada se ordena de menor a mayor (o de mayor a menor si eso es lo que prefiere, en cuyo caso el primer elemento es el tamaño inicial de la lista de movimientos, si no se toma como entrada separada). Y tampoco contendrá índices duplicados.
- Si el índice más grande de la lista de entrada es más grande que la lista de movimientos de arriba (55 movimientos están en la lista de movimientos de arriba), volveremos al principio de la lista nuevamente (tantas veces como sea necesario dependiendo del índice más grande) de la entrada).
- Se le permite producir en
y,x
lugar dex,y
, pero especifique esto en su respuesta si lo hace.
Ejemplo:
Entrada: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
Aquí los movimientos e índices (indexados a 0) por encima de otro:
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
Eliminando los índices de la lista de entrada, tendremos los siguientes movimientos-lista restantes:
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
Ahora, si caminamos desde la posición {0, 0}
sobre los movimientos restantes, tendremos las siguientes coordenadas nuevas después de cada movimiento:
{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}
Entonces el resultado final será: {-6, 10}
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
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}