23
เดรัจฉานบังคับสวิตช์บอร์ด
เมื่อวันก่อนทีมของเราไปที่ห้องหลบหนี หนึ่งในปริศนาที่เกี่ยวข้องกับสวิทช์ทางกลหกตัวที่คุณต้องหาชุดที่ถูกต้องของการเปิดและปิดเพื่อปลดล็อคกล่องค่อนข้างเช่นนี้: -v-v-v- -v-v-v- ในฐานะนักพัฒนาเราจึงตัดสินใจว่าจะมีประสิทธิภาพมากขึ้นในการลองชุดค่าผสม 2 ^ 6 = 64 หนึ่งชุดมากกว่าที่จะไขปริศนาได้ ดังนั้นเราจึงมอบหมายให้คนจนบางคนทำการนับเลขฐานสอง: -v-v-v- -v-v-v- -v-v-v- -v-v-^- -v-v-v- -v-^-v- -v-v-v- -v-^-^- และอื่น ๆ ความท้าทาย เขียนโปรแกรมที่ให้สวิตช์ทั้งหมดอยู่ในตำแหน่งปิดเป็นสตริงที่จัดรูปแบบตามด้านบนจะสร้างชุดค่าผสมทั้งหมดของการเปิดและปิดในลำดับใด ๆ คุณสามารถเขียนโปรแกรมเต็มหรือฟังก์ชั่น ดังนั้นโปรแกรมของคุณสามารถรับอินพุตผ่าน stdin ไฟล์หรือเป็นอาร์กิวเมนต์สตริงเดี่ยวและส่งคืนหรือพิมพ์เอาต์พุต หากส่งคืนผลลัพธ์อาจอยู่ในรายการ / array / etc มากกว่าสตริงเดียว หากเอาต์พุตเป็นสตริงเดี่ยวบอร์ดควรคั่นด้วยบรรทัดใหม่ (อนุญาตให้ขึ้นบรรทัดใหม่ได้) สตริงอินพุตจะตรงกับ regex r'((-v)+-)(\n(-v)+-)*'และเป็นตัวแทนหนึ่งบอร์ดที่ปิดสวิตช์ทั้งหมด ซึ่งหมายความว่าไม่มีกรณีใดเป็นศูนย์และสวิตช์จะจัดชิดซ้าย แต่ละแถวอาจไม่มีสวิตช์จำนวนเท่ากัน บอร์ดเอาต์พุตแต่ละอันควรมีรูปแบบเดียวกันกับอินพุตยกเว้นว่าวีอาจถูกแทนที่ด้วย ^ ตามที่ต้องการ บอร์ดเอาต์พุตสามารถคั่นด้วยจำนวนบรรทัดใหม่ใด ๆ เนื่องจากรันไทม์นั้นเป็นไปตามธรรมชาติ O (2 …