Inspiré par ce défi .
Objectif:
Étant donné un standard préconfiguré et une liste d'index, inversez les commutateurs aux index donnés.
Un tableau est composé d'un certain nombre de commutateurs ( v
ou ^
) enveloppés de -
's et disposés en rangées de longueur variable. Voici un exemple de standard:
-v-^-v-
-^-v-
-v-^-v-
Pour inverser / basculer un commutateur, il faut le changer de v
à ^
, ou de ^
àv
.
Les commutateurs sont indexés de gauche à droite, de haut en bas. Par exemple, dans l'exemple ci-dessus, le dernier v
de la première ligne serait en position 3 et le^
de la ligne du milieu serait à 4 (en utilisant l'indexation 1).
Contribution:
- Une chaîne (ou une liste de chaînes) représentant le standard. Il est garanti pour correspondre à l'expression régulière
((-[v^])+-)(\n(-[v^])+-)*
. - Une liste éventuellement vide de nombres représentant des index, peut être 0 ou 1 (ou un certain nombre arbitraire si vous le souhaitez) indexé. Ce sont les commutateurs qui doivent être actionnés.
Sortie:
- Un tableau de distribution de la même forme que l'entrée avec les commutateurs spécifiés inversés. Tout commutateur non spécifié doit conserver son état initial.
Règles:
- L'entrée sera toujours correctement formatée et aucun index donné ne sera hors limites.
- La liste des index sera triée et n'aura pas de doublons.
- Indiquez dans votre réponse quelle indexation vous utilisez, que ce soit 0, 1 ou arbitraire.
- La fin des espaces blancs est correcte tant que la sortie ressemble à l'entrée.
- C'est le code-golf donc le code le plus court gagne.
Exemples:
#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-
>"-"
: Comme la chaîne d'entrée est garantie pour commencer -
, vous pouvez vérifier par rapport au paramètre / argument / nom de variable que vous utilisez pour cela à la place.