ลำดับการเคลื่อนย้ายเป็นลำดับของการเคลื่อนไหว (รอบ) บนลูกบาศก์ของรูบิค (สำหรับสัญกรณ์ดูลงด้านล่าง) ข้างลำดับเคลื่อนย้ายที่ว่างเปล่ามีลำดับการย้ายอื่น ๆ อีกมากมายที่ไม่มีผลกระทบกับคิวบ์เลย เราเรียกลำดับลำดับการย้ายเหล่านี้
บางส่วนของลำดับตัวตนเหล่านี้มีความชัดเจนในการตรวจสอบเช่นหรือU2 R R' U2
U D2 U' D2
ในครั้งแรกหนึ่งสองย้ายแบบสุ่มจะทำและหลังจากนั้นทันทียกเลิกU2 R
R' U2
คนที่สองคล้ายกัน การสุ่มสองครั้งแรกU D2
และหลังจากนั้นจะถูกยกเลิก แต่ในลำดับที่กลับU' D2
ด้าน สิ่งนี้ใช้ได้ผลเพราะการเคลื่อนไหวมีU
ผลต่อชิ้นส่วนของชั้นบนD2
เท่านั้นและการเคลื่อนย้ายจะส่งผลเฉพาะส่วนของชั้นล่างเท่านั้น คุณสามารถเห็นการสร้างภาพของลำดับการเคลื่อนที่ทั้งสองนี้
ลำดับตัวตนอื่น ๆ อาจไม่ชัดเจนเลย R' U' R' F' U F U' R' F R F' U' R U2 R
ยกตัวอย่างเช่นลำดับ มันค่อนข้างยาว แต่ก็ไม่มีผลกับลูกบาศก์เลย
ย้ายสัญลักษณ์
การเคลื่อนย้ายอธิบายถึงการหมุนหนึ่งชั้นของหนึ่งในหกใบหน้าของคิวบ์ การเคลื่อนที่ประกอบด้วยตัวอักษรหนึ่งตัวที่เป็นตัวแทนของใบหน้าตามด้วยคำต่อท้ายที่เป็นตัวเลือกที่แสดงถึงมุมเลี้ยว
ตัวอักษรและใบหน้าที่เกี่ยวข้องคือU (ขึ้น - ด้านที่หันขึ้นด้านบน), D (ลง - ด้านที่หันลงด้านล่าง), R (ขวา - ด้านที่หันไปทางขวา), L (ซ้าย - ด้านที่หันไปทางซ้าย) , F (ด้านหน้า - ด้านที่หันหน้าเข้าหาคุณ) และB (ด้านหลัง - ด้านที่หันหน้าไปทางคุณ)
หากไม่มีคำต่อท้ายใบหน้าจะหมุนตามเข็มนาฬิกา 90 องศาคำต่อท้าย'
หมายถึงใบหน้าหัน 90 องศาทวนเข็มนาฬิกาและคำต่อท้าย2
หมายถึงใบหน้าหันตามเข็มนาฬิกา 180 องศา
คุณมีปัญหากับสัญกรณ์เพียงแค่ใช้http://alg.cubing.netซึ่งคุณสามารถเห็นภาพลำดับการเคลื่อนที่ดังกล่าว
ความท้าทาย
งานของคุณคือการเขียนโปรแกรมที่กำหนดว่าลำดับการย้ายเป็นตัวตนหรือไม่
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ มันควรจะได้รับสตริงที่มีลำดับการย้าย (การย้ายถูกคั่นด้วยช่องว่าง) เป็นอินพุต (ผ่าน STDIN, อาร์กิวเมนต์บรรทัดคำสั่ง, พร้อมท์หรืออาร์กิวเมนต์ของฟังก์ชัน) และเอาต์พุต (ผ่านค่าส่งคืนหรือ STDOUT) ค่าบูลีนหรือจำนวนเต็ม True - 1 - identity identity / False - 0 - ไม่ใช่ identity identity)
หากคุณต่อท้าย'
สร้างปัญหาในภาษาการเขียนโปรแกรมของคุณคุณอาจใช้สัญลักษณ์ที่แตกต่างกัน แต่ไม่ใช่ตัวเลข R F2 U3
ไม่อนุญาต
นี่คือ codegolf ดังนั้นรหัสที่สั้นที่สุด (เป็นไบต์) ชนะ
กรณีทดสอบ
"" -> True
"U2 R R' U2" -> True
"U D2 U' D2" -> True
"U2 R U2 R'" -> False
"R' U' R' F' U F U' R' F R F' U' R U2 R" -> True
"L'" -> False
"B B2 B' B2" -> True
"D D2 D'" -> False
"R F' D2 U B' F2 B' U2 D2 F2 B2 U F R'" -> True
"D2 U' R2 U F2 D2 U' R2 U' B' L2 R' B' D2 U B2 L' D' R2" -> False
"R U R' U' R' F R2 U' R' U' R U R' F' R2 U R2 U' R2 U' D R2 U' R2 U R2 D'" -> True
"R U R' U' R' F R2 U' R' U' R U R' F' R2 U' R2 U R2 U' D R2 U' R2 U R2 D'" -> False
"B2 F2 U' F2 U R2 F2 U2 B D' R' D' R2 D' F2 U' F U R2 U R B D B D2 L2 D' F2 U D' R' D B R2 D2 F2 R' F2 D2" -> True
"R U2 R' U R' U2 R U2 R U R' U' R' U R U2" -> False
"U F B' R' U F' R U' F' B L U' F L'" -> False
"R2 U' R' U' R U R U R U' R" -> False
"R' F R' B2 R F' R' B2 R2" -> False
U3
คุณก็สามารถโยนคำต่อท้ายเป็นตัวเลขได้
R2 D2
คนอาจจะเพียงแค่ชอบเห็นลำดับ
That is F(orward), B(ackward), L(eft), R(ight), U(p), D(own)
R F2 U3
?