Inspiriert von dieser Herausforderung .
Tor:
Bei einer vorkonfigurierten Schalttafel und einer Liste von Indizes müssen die Schalter an den angegebenen Indizes invertiert werden.
Eine Schalttafel besteht aus einer Anzahl von Schaltern ( v
oder Schaltern ^
) -
, die in Reihen unterschiedlicher Länge angeordnet sind. Hier ist ein Beispiel für eine Telefonzentrale:
-v-^-v-
-^-v-
-v-^-v-
Um einen Schalter zu invertieren / umzudrehen, müssen Sie ihn von v
auf ^
oder von ^
auf ändern v
.
Die Schalter sind von links nach rechts und von oben nach unten indiziert. Im obigen Beispiel v
wäre beispielsweise der letzte in der ersten Reihe an Position 3 und der ^
in der mittleren Reihe an Position 4 (mit 1-Indexierung).
Eingang:
- Eine Zeichenfolge (oder eine Liste von Zeichenfolgen), die die Telefonzentrale darstellt. Es ist garantiert, dass es zum regulären Ausdruck passt
((-[v^])+-)(\n(-[v^])+-)*
. - Eine möglicherweise leere Liste von Zahlen, die Indizes darstellen, kann mit 0 oder 1 (oder einer beliebigen Zahl, wenn Sie möchten) indiziert sein. Dies sind die Schalter, die umgedreht werden müssen.
Ausgabe:
- Eine Schalttafel in der gleichen Form wie der Eingang, wobei die angegebenen Schalter invertiert sind. Alle nicht angegebenen Schalter sollten ihren ursprünglichen Zustand beibehalten.
Regeln:
- Eingaben werden immer korrekt formatiert und keine angegebenen Indizes sind außerhalb der Grenzen.
- Die Liste der Indizes wird sortiert und enthält keine Duplikate.
- Geben Sie in Ihrer Antwort an, welche Indizierung Sie verwenden, sei es 0, 1 oder eine beliebige.
- Das nachgestellte Leerzeichen ist in Ordnung, solange die Ausgabe wie die Eingabe aussieht.
- Das ist Code-Golf, also gewinnt der kürzeste Code.
Beispiele:
#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-
>"-"
: Da die Eingabe-Zeichenfolge mit Sicherheit beginnt -
, können Sie stattdessen anhand des verwendeten Parameters / Arguments / Variablennamens prüfen.