Inspirado en este desafío .
Gol:
Dada una centralita preconfigurada y una lista de índices, invierta los conmutadores en los índices dados.
Una centralita está compuesta por cierto número de interruptores ( v
o ^
) envueltos en -
's' y dispuestos en filas de longitud variable. Aquí hay un cuadro de distribución de ejemplo:
-v-^-v-
-^-v-
-v-^-v-
Invertir / voltear un interruptor significa cambiarlo de v
a ^
, o de ^
a v
.
Los interruptores están indexados de izquierda a derecha, de arriba a abajo. Por ejemplo, en el ejemplo anterior, el último v
en la primera fila estaría en la posición 3 y el ^
de la fila central estaría en 4 (usando la indexación 1).
Entrada:
- Una cadena (o lista de cadenas) que representa la centralita. Se garantiza que coincida con la expresión regular
((-[v^])+-)(\n(-[v^])+-)*
. - Una lista posiblemente vacía de números que representan índices, puede ser 0 o 1 (o algún número arbitrario si lo desea) indexado. Estos son los interruptores que deben activarse.
Salida:
- Una centralita en la misma forma que la entrada con los conmutadores especificados invertidos. Cualquier interruptor no especificado debe conservar su estado inicial.
Reglas:
- La entrada siempre tendrá el formato correcto y ningún índice dado estará fuera de los límites.
- La lista de índices se ordenará y no tendrá duplicados.
- Indique en su respuesta qué indexación usa, ya sea 0, 1 o alguna arbitraria.
- El espacio en blanco al final está bien siempre que la salida se parezca a la entrada.
- Este es el código de golf, por lo que gana el código más corto.
Ejemplos:
#Using 1-indexing
input: #Empty Case
[],
-v-^-v-
output:
-v-^-v-
input: #Single switch
[1],
-v-
output:
-^-
input: #Skip a line
[3,5],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-v-
-v-^-
input: #Flip one in each line + number wrap
[3,4,6],
-^-v-v-
-v-
-^-^-
output:
-^-v-^-
-^-
-^-v-
input: #Flip 'em all
[1,2,3,4,5,6],
-^-v-v-
-v-
-^-^-
output:
-v-^-^-
-^-
-v-v-
>"-"
: Como se garantiza que la cadena de entrada comienza -
, puede verificar el nombre del parámetro / argumento / variable que está utilizando para eso.