ฉันได้รับเมื่อเร็ว ๆ นี้การเล่นผ่าน ' ทอ ' และฉันคิดว่ามันเป็นของขวัญที่เป็นความท้าทายที่น่าสนใจสำหรับรหัสกอล์ฟ
สถานที่ตั้ง:
The Weaver เป็นเกมที่คุณจะได้รับริบบิ้นจำนวนมากจาก 2 ทิศทาง 90 องศาและเป้าหมายของคุณคือการสลับมันที่ทางแยกบางแห่งเพื่อให้ได้ผลลัพธ์ที่ต้องการ
เช่นนี้: นี่คือการแลกเปลี่ยน: นี่ไม่ใช่:
การป้อนข้อมูล:
3 อาร์เรย์:
- ริบบิ้นด้านบน (จากซ้ายไปขวา)
- ริบบิ้นด้านซ้าย (บนลงล่าง)
- พิกัดของจุดแยกที่ต้องการสลับ
เอาท์พุท:
2 อาร์เรย์:
- ริบบิ้นด้านล่าง (จากซ้ายไปขวา)
- ริบบิ้นด้านขวา (บนลงล่าง)
ตัวอย่าง:
ฉันจะใช้ภาพด้านบนเป็นตัวอย่างแรก:
การป้อนข้อมูล: [r, y, b], [r, y, b], [(0, 1), (2, 1), (2, 2)]
เกิดอะไรขึ้น:
r y b
r y b
r r r r•y y y y
r r b
y y y y y y y y
r r b
b b b b•r r•b b
r b r
r b r
ในกรณีที่•
แสดงให้เห็นถึงการแลกเปลี่ยน
เอาท์พุท: [r, b, r], [y, y, b]
การป้อนข้อมูล: [a, b, c], [d, e, f], [(0, 0), (2, 1)]
เกิดอะไรขึ้น:
a b c
a b c
d d•a a a a a a
d b c
e e e e e e e e
d b c
f f f f•b b b b
d f c
d f c
เอาท์พุท: [d, f, c], [a, e, b]
การป้อนข้อมูล: [a, b], [a, b, c], [(0, 1), (1, 0), (1, 1), (2, 0), (2, 1), (3, 1)]
เกิดอะไรขึ้น:
a b
a b
a a a a•b b
a a
b b•a a•a a
b a
c c•b b•a a
c b
c b
เอาท์พุท: [c, b], [b, a, a]
หมายเหตุ:
- ตัวอย่างที่แสดงพิกัดให้เป็นแม้ว่าคุณอาจจะใช้พวกเขาเป็น
(row, column)
(column, row)
- แถวบนและคอลัมน์ซ้ายอาจมีริบบิ้นที่มีสีเดียวกัน
- คณะกรรมการสามารถเป็นรูปสี่เหลี่ยมผืนผ้า
- พิกัดทั้งหมดจะไม่เป็นลบ (
>=0
) (หรือบวกอย่างยิ่ง (>=1
) หากคุณเลือก 1 การจัดทำดัชนี) - ละเว้นการแลกเปลี่ยนใด ๆ ที่อยู่นอกบอร์ด
- คุณสามารถเลือกทำงานกับตัวอักษร (
[a-zA-Z]
), จำนวนเต็ม ([0-9]
) หรือทั้งสองอย่าง - ริบบิ้นในผลลัพธ์ของคุณจะต้องตรงกับริบบิ้นในอินพุตอย่างแน่นอน (
a -> a
) - คุณอาจถือว่ารายการ swaps ถูกเรียงลำดับในแบบที่คุณต้องการตราบใดที่มันสอดคล้องกัน (ถ้าคุณทำโปรดระบุว่าควรจะเรียงลำดับอย่างไร)
- คุณอาจใช้ค่า swap เป็น 0 หรือ 1-indexed
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
ตัวอย่างเพิ่มเติม:
Input:
[b], [r], []
Output:
[b], [r]
Input:
[b], [r], [(0, 0)]
Output:
[r], [b]
Input:
[r, p, y], [r, y, p], [(0, 0), (1, 2), (2, 1), (3, 2)]
Output:
[r, p, y], [r, y, p]
Input:
[b, y, o, r],
[r, o, b, y],
[(0, 0), (2, 0), (3, 2)]
Output:
[b, y, y, r],
[b, o, r, o]
ตัวอย่างสุดท้ายเกี่ยวข้องกับกรณีนี้ (หากทำให้เห็นภาพได้ง่ายขึ้น):
นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดเป็นไบต์สำหรับแต่ละภาษาที่ชนะ