Giriş:
3x3x3 Rubik Küpü muhtemel permütasyona sahiptir ve yaklaşık 43 katrilyondur . Bu numarayı daha önce duymuş olabilirsiniz, ancak gerçekte nasıl hesaplanır?
3x3x3 Rubik Küp, her biri dokuz çıkartma içeren altı yüze sahiptir. Çıkartmalar yerine (dış) parçalara baktığımızda, altı merkez parçamız var; sekiz köşe parçası; ve on iki kenar parçası. Merkezler taşınamadığı için hesaplamalarda bulunanları görmezden gelebiliriz. Köşeler ve kenarlar gelince:
- Orada( ) sekiz köşeyi düzenleme yolları. Her köşenin üç olası yönü vardır, ancak yalnızca yedi (sekiz) bağımsız olarak yönlendirilebilir; sekizinci / son köşenin oryantasyonu, önceki yedi, ( ) olasılıkları göz önüne alındığında bağlıdır .
- Orada ( oniki kenarları düzenlemek için) yolları. yarıyaçünkü kenarlar her zaman tam olarak köşeler tam olarak eşit bir permütasyonda olmalıdır . Onbir kenar, ( ) olasılık göz önüne alındığında, önceki on birine bağlı olarak onikinci / son kenarın çevrilmesiyle bağımsız olarak .
Bunu bir araya getirmek için aşağıdaki formüle sahibiz:
Kaynak: Wikipedia - Rubik Küp Permütasyonları
Bu zaten oldukça karmaşık görünse de, 3x3x3 Küp için hala oldukça yalındır. Küpler için bile formül biraz farklıdır; Bu, örneğin 4x4x4 küp için bir formüldür:
Kısa ölçekte yaklaşık 7,40 katrilyon birimdir .
Ve daha büyük NxNxN Küpleri için (yani, şu anki Dünya Rekoru 33x33x33) formülü biraz uzatılacak. Bununla birlikte, bu girişi çok uzun sürmemesi için, yerine 4x4x4 Küp ve diğer bazı NxNxN Küplerin permütasyonlarının sonuçlanan bir formülle açıklandığı bu bağlantıları buraya koydum:
Şimdi merak ediyor olabilirsiniz: Herhangi bir x x Küp için dayalı genel bir formül var mı? Kesinlikle var. İşte tamamen dayalı üç aynı sonuçlar veren tamamen farklı üç algoritmalar :
1: Chris Hardwick'in Formülü:
2: Christopher Mowla'nın trig formülü:
3: Christopher Mowla'nın ilkeleri Formül:
burada olan .
Kaynak: Cubers-reddit - Pozisyon Sayısının, Tanrı'nın Sayısının vb. Matematiksel Sayma Formülleri
Meydan okuma:
aralığında bir giriş tamsayı verilmiş olan bu üç formülden birini (veya kendi türevinizi) seçin ve uygulayın , doğru sonucu verir.
Meydan okuma kuralları:
- Bu üçün yanında başka bir formül kullanmakta özgürsünüz, ancak bu üçünün doğru olduğunu kanıtladığınızı unutmayın. Başka bir formül kullanıyorsanız, lütfen nereden aldığınızı gösteren bir bağlantı ekleyin (veya kendiniz ile ilgili derinlemesine bir açıklama ekleyin). Çıktı doğruysa, aralıktaki tüm tamsayıları kontrol edeceğim. A075152: Belki bu dizi için oeis'te ilham bulunabilir .
- otomatik olarak bilimsel bir çıktı verirse (yani , 4x4x4 formülünden sonraki sayı yerine ) buna izin verilir. Ancak, bu bilimsel yuvarlamayı kesin bir çıktıya dönüştürmek için lütfen cevabınıza ek kod ekleyin, böylece sonuçlar doğrulanabilir, çünkü kodunuzda formülün yürütülmesi sırasında kayan nokta hassasiyetinden kaynaklanan yuvarlama hataları nedeniyle izin verilmez - gerçek sonuç, kesin.
- Programınız / işleviniz, en azından aralığındaki girişler için doğru olmalıdır ( zaten devasa bir sayıyla sonuçlandığından, daha büyük bir , muhtemelen bu sorunu çözebiliyorsanız çalışacaktır. bir doğru).
- Bir sayaç ile olası tüm permütasyonları geçmenize izin verilmez, çünkü bu makul bir sürede hiçbir şey vermez. Yalnızca bir formülün (sağlanan üç taneden biri, bunlardan birinin bir türevi veya tamamen yeni bir formülün) uygulanması veya makul bir sürede (elbette zor kodlama olmadan) doğru sonuçları verecek başka bir yöntem ) izin verilir. Bunu zorlamak için sınırlı bir süre eklemeyi düşündüm , ama şahsen kısıtlı süreye karşı kod-golf ile birleşiyorum , bu yüzden yapmayacağım. Yine de, lütfen programınızın cevapları verdiğinden emin olun ve bir nedenden ötürü TIO için çok yavaşsa, doğrulama için yerel makinenizin çıktısıyla bazı ekran görüntüleri ekleyin.
Genel kurallar:
- Bu kod golf , bayt cinsinden en kısa cevap kazanır.
Code-golf dillerinin, codegolfing olmayan dillerle cevap göndermekten vazgeçmesine izin vermeyin. Herhangi bir programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın. - Standart G / Ç kurallarına cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT işlevlerini, uygun parametreleri içeren fonksiyonlar / yöntemleri ve dönüş tipini, tam programları kullanmanıza izin verilir. Senin çağrı.
- Varsayılan Loopholes yasaktır.
- Mümkünse, lütfen kodunuzu test eden bir bağlantı ekleyin (ör. TIO ).
- Ayrıca, cevabınız için bir açıklama eklemek şiddetle tavsiye edilir.
Test durumları:
Burada aralığında test durumları (daha büyük test durumları için yukarıdaki WolframAlpha linklerini kullanmaktan çekinmeyin):
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
NOT: Bu bir kod golfü mücadelesi olduğundan, temelde aşağıdakilere dayanır: Bu üç formülden birini (veya bir türev / hala doğru sonuçları üreten kendi yönteminizi) uygulayın.
floor