Lấy cảm hứng từ thử thách này .
Mục tiêu:
Đưa ra một tổng đài được cấu hình sẵn và một danh sách các chỉ mục, đảo ngược các công tắc tại các chỉ mục đã cho.
Một tổng đài được tạo thành từ một số số công tắc ( v
hoặc ^
) được bọc trong -
và được sắp xếp thành các hàng có độ dài khác nhau. Dưới đây là một tổng đài ví dụ:
-v-^-v-
-^-v-
-v-^-v-
Để đảo / lật một công tắc có nghĩa là thay đổi nó từ v
sang ^
hoặc từ ^
sang v
.
Các công tắc được lập chỉ mục từ trái sang phải, từ trên xuống dưới. Ví dụ, trong ví dụ trên, hàng cuối cùng v
ở hàng đầu tiên sẽ ở vị trí 3 và ^
ở hàng giữa sẽ ở vị trí 4 (sử dụng chỉ mục 1).
Đầu vào:
- Một chuỗi (hoặc danh sách các chuỗi) đại diện cho tổng đài. Nó được đảm bảo để phù hợp với regex
((-[v^])+-)(\n(-[v^])+-)*
. - Một danh sách các số có thể trống đại diện cho các chỉ mục, có thể là 0 hoặc 1 (hoặc một số tùy ý nếu bạn muốn) được lập chỉ mục. Đây là những công tắc cần được lật.
Đầu ra:
- Một tổng đài có hình dạng giống như đầu vào với các công tắc được chỉ định đảo ngược. Bất kỳ thiết bị chuyển mạch không xác định nên giữ lại trạng thái ban đầu của chúng.
Quy tắc:
- Đầu vào sẽ luôn được định dạng chính xác và không có chỉ mục nào được đưa ra ngoài giới hạn.
- Danh sách các chỉ mục sẽ được sắp xếp và sẽ không có bản sao.
- Hãy nêu câu trả lời của bạn về việc lập chỉ mục bạn sử dụng, có thể là 0, 1 hoặc một số tùy ý.
- Khoảng trắng lưu trữ là tốt miễn là đầu ra trông giống như đầu vào.
- Đây là mã golf nên mã ngắn nhất sẽ thắng.
Ví dụ:
#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-
>"-"
: Vì chuỗi đầu vào được đảm bảo bắt đầu bằng -
, bạn có thể kiểm tra đối với tên tham số / đối số / tên biến bạn đang sử dụng để thay thế.