แรงบันดาลใจจากความท้าทายนี้นี้
เป้าหมาย:
รับสวิตช์บอร์ดที่กำหนดค่าไว้ล่วงหน้าและรายการของดัชนีสลับกลับไปที่ดัชนีที่กำหนด
สวิตช์บอร์ดประกอบไปด้วยสวิตช์จำนวนหนึ่ง ( v
หรือ^
) ที่พัน-
กันและจัดเรียงเป็นแถวที่มีความยาวต่างกัน นี่คือตัวอย่างสวิตช์บอร์ด:
-v-^-v-
-^-v-
-v-^-v-
ในการสลับกลับ / พลิกสวิตช์หมายถึงการเปลี่ยนจากv
เป็น^
หรือจาก^
เป็นv
ไป
สวิตช์ถูกทำดัชนีจากซ้ายไปขวา, จากบนลงล่าง เช่นในตัวอย่างด้านบนสุดท้ายv
ในแถวแรกจะอยู่ในตำแหน่งที่ 3 และ^
ในแถวกลางจะอยู่ที่ 4 (โดยใช้การจัดทำดัชนี 1)
การป้อนข้อมูล:
- สตริง (หรือรายการสตริง) ที่แสดงถึงสวิตช์บอร์ด มันมีการประกันเพื่อให้ตรงกับ
((-[v^])+-)(\n(-[v^])+-)*
regex - รายการหมายเลขว่างที่อาจเป็นตัวแทนดัชนีอาจเป็น 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-
>"-"
ดังนี้: เนื่องจากสตริงอินพุตมีการรับประกันว่าจะเริ่มต้นด้วย-
คุณสามารถตรวจสอบกับพารามิเตอร์ / อาร์กิวเมนต์ / ชื่อตัวแปรที่คุณใช้แทน