Inspirado por este desafio .
Objetivo:
Dado um painel de controle pré-configurado e uma lista de índices, inverta os switches nos índices fornecidos.
Um quadro de distribuição é composto por um número de interruptores ( v
ou ^
) enrolados em -
's' e organizados em linhas de comprimento variável. Aqui está um quadro de distribuição de exemplo:
-v-^-v-
-^-v-
-v-^-v-
Inverter / inverter um interruptor significa alterá-lo de v
para ^
ou de ^
para v
.
Os comutadores são indexados da esquerda para a direita, de cima para baixo. Por exemplo, no exemplo acima, o último v
na primeira linha estaria na posição 3 e o ^
na linha do meio estaria em 4 (usando a indexação 1).
Entrada:
- Uma sequência (ou lista de sequências) representando o quadro de distribuição. É garantido que corresponda ao regex
((-[v^])+-)(\n(-[v^])+-)*
. - Uma lista possivelmente vazia de números representando índices pode ser 0 ou 1 (ou algum número arbitrário, se você quiser) indexado. Esses são os comutadores que precisam ser invertidos.
Saída:
- Um quadro de distribuição na mesma forma que a entrada com os interruptores especificados invertidos. Quaisquer opções não especificadas devem manter seu estado inicial.
Regras:
- A entrada sempre será formatada corretamente e nenhum índice fornecido ficará fora dos limites.
- A lista de índices será classificada e não terá duplicatas.
- Declare em sua resposta qual indexação você usa, seja 0, 1 ou alguma arbitrária.
- O espaço em branco à direita é bom, desde que a saída se pareça com a entrada.
- Isso é código-golfe, então o código mais curto vence.
Exemplos:
#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 é garantido o início da sequência de entrada -
, você pode verificar o parâmetro / argumento / nome da variável que está usando para isso.