Натхненний цим викликом .
Мета:
Враховуючи заздалегідь налаштований розподільний щит та перелік індексів, інвертуйте комутатори на задані індекси.
Комутаційний щит складається з деякої кількості вимикачів ( v
або ^
), загорнутих у них -
і розташованих у ряди різної довжини. Ось приклад комутатора:
-v-^-v-
-^-v-
-v-^-v-
Інвертувати / перевернути перемикач означає змінити його v
на ^
або переключити ^
на v
.
Перемикачі індексуються зліва направо, зверху вниз. Наприклад, у наведеному вище прикладі останній v
у першому рядку знаходився б у положенні 3, а ^
в середньому ряду - у 4 (використовуючи 1-індексацію).
Вхід:
- Рядок (або список струн), що представляє розподільний щит. Це гарантовано відповідає рівню
((-[v^])+-)(\n(-[v^])+-)*
. - Можливо порожній список номерів, що представляють індекси, може бути індексованим 0 або 1 (або якесь довільне число, якщо ви хочете). Це вимикачі, які потрібно перевернути.
Вихід:
- Комутатор тієї самої форми, що і вхід із вказаними перемикачами. Будь-які невизначені комутатори повинні зберігати свій початковий стан.
Правила:
- Введення завжди буде правильно відформатовано, і жоден заданий індекс не вийде за межі.
- Список індексів буде відсортований і не буде дублікати.
- Вказуйте у своїй відповіді, яке індексування ви використовуєте, будь то 0, 1 або якесь довільне.
- Тривалість пробілів є прекрасною, доки вихід буде схожий на вхід.
- Це код-гольф, тому виграє найкоротший код.
Приклади:
#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-
>"-"
: Оскільки введений рядок гарантовано починається -
, ви можете перевірити ім'я параметра / аргументу / змінної, яке ви використовуєте для цього.