Ispirato da questa sfida .
Obbiettivo:
Dato un centralino preconfigurato e un elenco di indici, invertire gli interruttori in corrispondenza degli indici indicati.
Un centralino è costituito da un numero di interruttori ( vo ^) avvolti in -'s e disposti in file di varia lunghezza. Ecco un esempio di centralino:
-v-^-v-
-^-v-
-v-^-v-
Invertire / capovolgere un interruttore significa cambiarlo da va ^, o da ^a v.
Gli interruttori sono indicizzati da sinistra a destra, dall'alto verso il basso. Ad esempio, nell'esempio sopra, l'ultimo vnella prima riga sarebbe in posizione 3 e quello ^nella riga centrale sarebbe a 4 (usando l'indicizzazione 1).
Ingresso:
- Una stringa (o un elenco di stringhe) che rappresenta il centralino. È garantito per abbinare il regex
((-[v^])+-)(\n(-[v^])+-)*. - Un elenco eventualmente vuoto di numeri che rappresentano indici, può essere indicizzato 0 o 1 (o un numero arbitrario, se lo si desidera). Questi sono gli interruttori che devono essere ruotati.
Produzione:
- Un centralino della stessa forma dell'ingresso con gli interruttori specificati invertiti. Eventuali switch non specificati devono mantenere il loro stato iniziale.
Regole:
- L'input sarà sempre formattato correttamente e nessun indice dato sarà fuori dai limiti.
- L'elenco degli indici verrà ordinato e non avrà duplicati.
- Indica nella tua risposta quale indicizzazione usi, che sia 0, 1 o arbitraria.
- Gli spazi bianchi finali vanno bene purché l'output assomigli all'input.
- Questo è code-golf, quindi vince il codice più breve.
Esempi:
#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-
>"-": Poiché la stringa di input è garantita per iniziare -, puoi invece confrontare il parametro / argomento / nome della variabile che stai usando per quello.