บทนำ:
ลูกบาศก์รูบิค 3x3x3 มีพีชคณิตเป็นไปได้ซึ่งมีประมาณ 43 Quintillion คุณอาจเคยได้ยินเกี่ยวกับหมายเลขนี้มาก่อน แต่มันคำนวณได้อย่างไรจริง ๆ
ลูกบาศก์รูบิค 3x3x3 มีหกด้านแต่ละด้านมีเก้าสติกเกอร์ ดูที่ชิ้นส่วนภายนอกแทนที่จะเป็นสติกเกอร์เรามีชิ้นกลางหกชิ้น แปดมุมชิ้น; และขอบชิ้นสิบสองชิ้น เนื่องจากศูนย์ไม่สามารถเคลื่อนย้ายได้เราจึงสามารถข้ามศูนย์เหล่านั้นในการคำนวณได้ สำหรับมุมและขอบ:
- มี( ) วิธีในการจัดเรียงมุมทั้งแปด แต่ละมุมมีทิศทางที่เป็นไปได้สามแบบแม้ว่าจะมีเพียงแค่เจ็ด (จากแปด) เท่านั้น การวางแนวของมุมที่แปด / สุดท้ายขึ้นอยู่กับเจ็ดก่อนหน้านี้ให้ความเป็นไปได้ ( )
- มี ( ) วิธีในการจัดเรียงขอบทั้งสิบสอง ลดลงครึ่งหนึ่งจากเป็นเพราะขอบจะต้องอยู่ในการเปลี่ยนแปลงแม้แต่เมื่อมุมอยู่เสมอ สามารถพลิกขอบได้สิบเอ็ดอย่างอิสระโดยการพลิกของขอบที่สิบสอง / สุดท้ายขึ้นอยู่กับสิบเอ็ดก่อนหน้านี้ให้ความเป็นไปได้ ( )2112,048
เมื่อรวมเข้าด้วยกันเรามีสูตรต่อไปนี้:
ที่มา: Wikipedia - รูบิคคิวบิคิว
แม้ว่าสิ่งนี้อาจดูซับซ้อนอยู่แล้ว แต่มันก็ค่อนข้างตรงไปตรงมาสำหรับลูกบาศก์ 3x3x3 สำหรับแม้แต่ลูกบาศก์สูตรจะแตกต่างกันเล็กน้อย นี่เป็นสูตรสำหรับ Cube 4x4x4 เช่น:
ซึ่งจะอยู่ที่ประมาณ 7.40 quattuordecillion โยสั้น
และสำหรับก้อน NxNxN ขนาดใหญ่ (เช่นสถิติโลกปัจจุบัน 33x33x33) สูตรจะขยายออกไปเล็กน้อย เพื่อไม่ให้มีการแนะนำนี้นานเกินไปฉันใส่ลิงค์เหล่านี้ที่นี่แทนโดยที่การเรียงสับเปลี่ยนของ 4x4x4 Cube และก้อน NxNxN ขนาดอื่น ๆ ถูกอธิบายด้วยสูตรผลลัพธ์:
คุณอาจจะสงสัยโดยขณะนี้: มีสูตรทั่วไปตามที่สำหรับการใด ๆ x x Cube? มีอยู่อย่างแน่นอน ต่อไปนี้เป็นอัลกอริธึมที่แตกต่างกันสามแบบโดยสิ้นเชิงทั้งหมดล้วนให้ผลลัพธ์ที่เหมือนกันตาม :
1: สูตรของ Chris Hardwick:
2: สูตร Trig ของ Christopher Mowla:
3: สูตรเฉพาะของ Christopher Mowla:
ที่เป็น23)
ที่มา: Cubers-reddit - สูตรการนับทางคณิตศาสตร์ของจำนวนตำแหน่งจำนวนพระเจ้า ฯลฯ
ท้าทาย:
เลือกและใช้หนึ่งในสามสูตรเหล่านี้ (หรืออนุพันธ์ของคุณเอง) ซึ่งได้รับอินพุตจำนวนเต็มในช่วงผลลัพธ์ที่ถูกต้อง
กฏท้าทาย:
- คุณมีอิสระที่จะใช้สูตรอื่นนอกเหนือจากทั้งสามนี้ แต่โปรดจำไว้ว่าสามสูตรนี้ได้รับการพิสูจน์แล้วว่าถูกต้อง หากคุณใช้สูตรอื่นโปรดเพิ่มลิงก์ที่คุณได้รับจากสูตรนั้น (หรือถ้าคุณคิดสูตรเองเพิ่มคำอธิบายในเชิงลึก) และฉันจะตรวจสอบจำนวนเต็มทั้งหมดในช่วงถ้าผลลัพธ์ถูกต้อง บางทีอาจจะเป็นแรงบันดาลใจที่จะพบได้ในOEIS สำหรับลำดับนี้: A075152
- หากภาษาของคุณแสดงผลลัพธ์ทางวิทยาศาสตร์โดยอัตโนมัติ (เช่นแทนที่จะเป็นตัวเลขหลังจากสูตร 4x4x4) สิ่งนี้จะได้รับอนุญาต แต่โปรดเพิ่มรหัสเพิ่มเติมลงในคำตอบของคุณเพื่อแปลงการปัดเศษทางวิทยาศาสตร์นี้เป็นผลลัพธ์ที่แน่นอนเพื่อให้สามารถตรวจสอบผลลัพธ์ได้เนื่องจากข้อผิดพลาดในการปัดเศษเนื่องจากความแม่นยำจุดลอยตัวในระหว่างการดำเนินการสูตรในรหัสของคุณไม่อนุญาต แน่นอน
- โปรแกรม / ฟังก์ชั่นของคุณควรถูกต้องอย่างน้อยอินพุทในช่วง (แม้ว่าเนื่องจากส่งผลให้มีจำนวนตูดใหญ่แล้วใหญ่กว่าก็อาจทำงานได้เช่นกันถ้าคุณสามารถส่งออกได้ หนึ่งอย่างถูกต้อง)
- คุณไม่ได้รับอนุญาตให้วนซ้ำกับการเรียงสับเปลี่ยนที่เป็นไปได้ทั้งหมดเนื่องจากตัวนับจะไม่ส่งออกอะไรในเวลาที่เหมาะสม มีเพียงการนำไปใช้งานของสูตร (อย่างใดอย่างหนึ่งในสามที่ให้ไว้, อนุพันธ์ของหนึ่งในนั้น, หรือสูตรใหม่อย่างสมบูรณ์) หรือวิธีการอื่นที่จะให้ผลลัพธ์ที่ถูกต้องในระยะเวลาที่เหมาะสม (โดยไม่มีการเข้ารหัสแน่นอน ) ได้รับอนุญาต. ฉันคิดถึงการเพิ่มเวลาที่จำกัด ในการบังคับใช้ แต่ฉันเป็นการส่วนตัวกับการจำกัด เวลาร่วมกับการเล่นกอล์ฟดังนั้นฉันจะไม่ทำ ยังโปรดตรวจสอบให้แน่ใจว่าโปรแกรมของคุณให้คำตอบและหาก TIO ช้าเกินไปด้วยเหตุผลบางประการให้เพิ่มภาพหน้าจอบางส่วนที่มีเอาต์พุตจากเครื่องท้องถิ่นของคุณเป็นการยืนยัน
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
อย่าปล่อยให้ภาษาโค้ดกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานใช้สำหรับคำตอบของคุณด้วยกฎ I / O เริ่มต้นดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชั่น / วิธีพร้อมพารามิเตอร์ที่เหมาะสมและประเภทผลตอบแทนโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงก์พร้อมทดสอบรหัสของคุณ (เช่นTIO )
- นอกจากนี้ขอแนะนำให้เพิ่มคำอธิบายสำหรับคำตอบของคุณ
กรณีทดสอบ:
ที่นี่กรณีทดสอบสำหรับอยู่ในช่วง (ลังเลที่จะใช้ลิงก์ WolframAlpha ด้านบนสำหรับกรณีทดสอบขนาดใหญ่):
n=2
3674160
n=3
43252003274489856000
n=4
7401196841564901869874093974498574336000000000
n=5
282870942277741856536180333107150328293127731985672134721536000000000000000
n=6
157152858401024063281013959519483771508510790313968742344694684829502629887168573442107637760000000000000000000000000
n=7
19500551183731307835329126754019748794904992692043434567152132912323232706135469180065278712755853360682328551719137311299993600000000000000000000000000000000000
n=8
35173780923109452777509592367006557398539936328978098352427605879843998663990903628634874024098344287402504043608416113016679717941937308041012307368528117622006727311360000000000000000000000000000000000000000000000000
n=9
14170392390542612915246393916889970752732946384514830589276833655387444667609821068034079045039617216635075219765012566330942990302517903971787699783519265329288048603083134861573075573092224082416866010882486829056000000000000000000000000000000000000000000000000000000000000000
n=10
82983598512782362708769381780036344745129162094677382883567691311764021348095163778336143207042993152056079271030423741110902768732457008486832096777758106509177169197894747758859723340177608764906985646389382047319811227549112086753524742719830990076805422479380054016000000000000000000000000000000000000000000000000000000000000000000000000000000000
หมายเหตุ: เนื่องจากนี่เป็นความท้าทายของการเล่นกอล์ฟจึงจำเป็นต้องใช้สูตรหนึ่งในสามสูตรนี้ (หรืออนุพันธ์ / วิธีการของคุณเองที่ยังคงให้ผลลัพธ์ที่ถูกต้อง) โดยย่อ
floor