Zainspirowany tym wyzwaniem .
Cel:
Biorąc pod uwagę wstępnie skonfigurowaną centralę i listę indeksów, odwróć przełączniki przy podanych indeksach.
Rozdzielnica składa się z pewnej liczby przełączników ( vlub ^) owiniętych w -i rozmieszczonych w rzędach o różnej długości. Oto przykładowa centrala:
-v-^-v-
-^-v-
-v-^-v-
Aby odwrócić / przerzucić środki przełączające zmieniając go od vdo ^, lub od ^do v.
Przełączniki są indeksowane od lewej do prawej, od góry do dołu. Np. W powyższym przykładzie ostatni vw pierwszym rzędzie byłby w pozycji 3, a ^w środkowym rzędzie miałby 4 (przy użyciu indeksowania 1).
Wkład:
- Ciąg (lub lista ciągów) reprezentujący centralę. Gwarantowane jest dopasowanie do wyrażenia regularnego
((-[v^])+-)(\n(-[v^])+-)*. - Prawdopodobnie pusta lista liczb reprezentujących indeksy, może być zindeksowana 0 lub 1 (lub dowolna liczba dowolna). Są to przełączniki, które należy przełączyć.
Wydajność:
- Tablica rozdzielcza w tym samym kształcie co wejście z określonymi przełącznikami odwróconymi. Wszelkie nieokreślone przełączniki powinny zachować swój stan początkowy.
Zasady:
- Dane wejściowe zawsze będą poprawnie sformatowane i żadne podane indeksy nie będą poza zakresem.
- Lista indeksów zostanie posortowana i nie będzie miała duplikatów.
- Podaj w swojej odpowiedzi, jakiego indeksowania używasz, czy to 0, 1, czy jakiś dowolny.
- Końcowe białe znaki są w porządku, o ile dane wyjściowe wyglądają jak dane wejściowe.
- To jest golf golfowy, więc wygrywa najkrótszy kod.
Przykłady:
#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-
>"-": Ponieważ gwarantowany jest ciąg wejściowy -, możesz sprawdzić parametr / argument / nazwę zmiennej, której używasz do tego.