งานของคุณคือการสร้างลำดับการเคลื่อนที่แบบสุ่มซึ่งสามารถใช้ในการช่วงชิง Cube ของ Rubik ช่วงชิงดังกล่าวประกอบด้วยการเคลื่อนไหว 25 ครั้ง ย้ายแต่ละประกอบด้วยตัวอักษรตามด้วยหนึ่งคำต่อท้ายUDRLFB
'2
สัญกรณ์นี้เรียกว่าสัญกรณ์ Singmaster UDRLFB
แสดงถึงหนึ่งใน 6 ใบหน้าและคำต่อท้ายที่'2
เป็นตัวเลือกแสดงถึงมุมเลี้ยว ข้อมูลนี้ไม่จำเป็นต้องใช้ในการแก้ปัญหา
เพื่อให้มั่นใจว่าสัญญาณรบกวนนั้นมีคุณภาพดีต้องใช้กฎสองข้อต่อไปนี้:
การเคลื่อนที่สองครั้งติดต่อกันจะต้องไม่มีตัวอักษรเดียวกัน นี้ห้ามการเคลื่อนไหวต่อเนื่อง
UU
,DD
,RR
,LL
,FF
และBB
และการรวมกันของพวกเขาทั้งหมดโดยใช้ตัวเลือกต่อท้ายเหมือนหรือU2U
U'U'
คู่การย้ายเหล่านี้ถูกแบนเนื่องจากสามารถลดการเคลื่อนไหวเป็น 1 หรือ 0 ได้อย่างง่ายดาย
U2U
มีผลเช่นเดียวกับU'
, ผลเช่นเดียวกับR'R
การเคลื่อนไหวติดต่อกันสามครั้งจะต้องไม่อยู่ในกลุ่มตัวอักษรเดียวกัน กลุ่มตัวอักษรที่อยู่
UD
, และRL
FB
กฎนี้ยังห้ามการเคลื่อนไหวต่อเนื่องUDU
,DUD
,RLR
,LRL
,FBF
,BFB
และการรวมกันของพวกเขาทั้งหมดโดยใช้ตัวเลือกต่อท้ายเช่นU2DU
, หรือRL'R
B2FB'
กลุ่มจัดเรียงใบหน้าตามแกนการเคลื่อนไหว
U
และD
อยู่ในกลุ่มเดียวกันเพราะทั้งคู่หันไปรอบแกนเดียวกัน ดังนั้นการU
เคลื่อนไหวจะไม่ส่งผลต่อชิ้นส่วนของD
ใบหน้าและการD
เคลื่อนไหวจะไม่ส่งผลกระทบต่อชิ้นส่วนของU
ใบหน้า ดังนั้นสองย้ายสามารถแลกเปลี่ยนUDU
มีผลเช่นเดียวกับและนี้สามารถลดลงได้UUD
U2D
ท้าทาย
เขียนสคริปต์หรือฟังก์ชั่นที่สร้างช่วงชิงสุ่ม ไม่มีอินพุต สคริปต์ / ฟังก์ชั่นจะต้องพิมพ์ 25 การเคลื่อนไหวโดยไม่มีการแยกหรือคั่นด้วยช่องว่างหนึ่งช่องหรือส่งคืนสตริงผู้ติดต่อ
โปรแกรมของคุณจะต้องสามารถสร้างช่วงชิงได้ทุกครั้งซึ่งเป็นไปตามกฎด้านบน แน่นอนว่าสมมติว่าตัวสร้างตัวเลขสุ่มนั้นสุ่มจริงและไม่หลอกแบบสุ่ม
นี่คือรหัสกอล์ฟ รหัสที่สั้นที่สุด (นับเป็นไบต์ ) ชนะ
ตัวอย่างผลลัพธ์:
การเรียกใช้สคริปต์ / ฟังก์ชั่น 3 ครั้งควรพิมพ์ / คืนสิ่งที่ชอบ:
R'B2R2F2R2FB'R2DR2ULFB2RB'U2B'FL'BR'U'RB'
U'DBR'B2U'B'U'RUF'B'RDR2U'B'LR'B'F2D2UF2L'
BR2F'B'R'D'R'U2B'F2D2R'F2D'F'D2R2B'L2R'UB'R2L'D
หากคุณแยกการเคลื่อนไหวด้วยช่องว่างแต่ละรายการ:
R2 L' F2 U2 D' R2 L2 F L' D2 U R B D' U2 L B2 L U B2 D U2 R' D2 U'
B R D2 F U2 B' R2 F2 B' U' L' R2 B U2 R' D B' F' U2 R' B' L R D2 R2
B2 R2 U D' B R D' R L2 D2 L2 R B2 F U' F2 B2 U' F U' D F R2 U2 B'
โปรดสังเกตว่าผลลัพธ์เหล่านี้ประกอบด้วย 25 การเคลื่อนไหว แต่มีความยาวแตกต่างกันเนื่องจากคำต่อท้ายที่เป็นตัวเลือก ไม่อนุญาตให้พิมพ์ช่องว่างเมื่อใด2
หรือ'
ใช้เป็นคำต่อท้าย คุณจะต้องพิมพ์หรือL2UR2F'R'U2
ไม่อนุญาตL2 U R2 F' R' U2
L2U R2F'R'U2
L2U R2F'R'U2
ผมหมายถึงสิ่งที่ชอบ U
ไม่มีคำต่อท้ายที่เป็นตัวเลือกดังนั้นจึงไม่ควรมีช่องว่าง พื้นที่ไม่ควรแทนที่คำต่อท้ายที่เป็นทางเลือก
U F2 L D2 R'...
ตัวอย่างเช่น ในกรณีนี้ไม่มีพื้นที่เพิ่มเติมซึ่งฉันคิดว่าควรจะโอเคตามกฎของคุณ
UR 2
ไม่อนุญาตหรือไม่U R2
ฉันควรได้รับอนุญาตฉันคิดว่าเนื่องจากช่องว่างระหว่างการเคลื่อนไหวทำให้รู้สึก