Rubix cube möglichkeiten berechnen?

4 Antworten

Ich habe die genante Zahl gesucht: https://oeis.org/search?q=43252003274489856000&language=english&go=Search

Bei dem ersten Ergebnis steht als rekursive und explizite Formeln:

a(1)=1; a(2)=7!*3^6; a(3)=8!*3^7*12!*2^10; a(n)=a(n-2)*24^6*(24!/24^6)^(n-2). - Herbert Kociemba, Dec 08 2016
a(n) = ceiling(3674160*11771943321600^(n mod 2)*620448401733239439360000^floor((n - 2)/2)*3246670537110000^floor(((n - 2)/2)^2)). - Davis Smith, Mar 20 2020

Bei größeren Würfeln als 3x3x3 gibt es Permutationen, die äußerlich nicht sichtbar sind, sodass es unterschiedliche Formeln gibt, je nachdem welche Steine unterscheidbar sind.

Was genau soll denn die zu berechnende Anzahl bedeuten ?

Soll das die Anzahl aller Möglichkeiten sein:

a) wie man die 54 Außenquadrate eines Rubik-Würfels mit je 9 der Farben rot, grün, blau, gelb, grün, weiß färben kann (ohne weitere Einschränkungen)

b) die Anzahl solcher Färbungen, welche ein realer Rubik-Würfel tatsächlich erlaubt

c) die Anzahl irgendwelcher "Lösungsstrategien"

???

Erst wenn du die korrekte Antwort auf diese Frage kennst und verstanden hast, lohnt es sich, Berechnungsmethoden für solche Anzahlen zu suchen.

Immerhin habe ich auch eine Seite gefunden, wo solche irrsinnig großen "Rubik-Zahlen" angegeben werden. Wenigstens einer der Kommentatoren geht ein Stück weit auf die Frage ein, was die berechneten Zahlen überhaupt genau bedeuten sollen. Die Antworten auf diese Frage sind aber keineswegs einfach.

Hallo Hallilo,

Ich habe mal etwas recherchiert und diese Formel gefunden, die sog. Chris Hardwick Formular.

Bild zum Beitrag

Diese berechnet die Anzahl an Möglichkeiten, die ein nxnxn-Cube haben kann.

Die Formel wurde auch in WolframAlpha-Format angegeben, das ich dann genutzt habe, um das in Python beispielsweise zu implementieren

WolframAlpha: for n = 3, ((24*2^10*12!)^Mod[n, 2] 7!3^6 24!^Floor[(n^2 - 2 n)/4])/4!^(6 Floor[(n - 2)^2/4])

Meine Python Implementierung:

import math


def calculatePossibilities(n):
    if(n == 1):
        return 1
    result = (
        pow(24 * pow(2, 10) * math.factorial(12), n % 2) *
        math.factorial(7) * pow(3, 6) *
        pow(math.factorial(24), math.floor((n**2 - 2*n) / 4))
    ) / pow(math.factorial(4), 6 * math.floor((n - 2)**2 / 4))
    
    return result


def printMenu():
    n = int(input("Enter n: "))
    possibilities = calculatePossibilities(n)
    print(possibilities)


while(True):
    printMenu()

Bitte frage mich nicht, wie man diese Formel erklären soll. Ich habe nämlich keinen Plan und auch eher keine Lust, mich so sehr damit zu beschäftigen. Es klappt zumindest!

Bei der 1 (also 1x1x1) hat die Formel nicht funktioniert. Das habe ich dann im Code berücksichtigt.

Die Ergebnisse habe ich auch nochmal kontrolliert. Sie scheinen richtig zu sein.

Ich hoffe, ich konnte dir mit meiner Antwort weiterhelfen. Solltest du weitere Fragen haben, kannst du sie gerne stellen.

Gruss

Quelle: https://codegolf.stackexchange.com/questions/183369/amount-of-permutations-on-an-nxnxn-rubiks-cube

WolframAlpha: https://www.wolframalpha.com/input?i=for+n+%3D+0%2C+%28%2824*2%5E10*12%21%29%5EMod%5Bn%2C+2%5D+7%213%5E6+24%21%5EFloor%5B%28n%5E2+-+2+n%29%2F4%5D%29%2F4%21%5E%286+Floor%5B%28n+-+2%29%5E2%2F4%5D%29

Woher ich das weiß:Hobby – In unter 3 Minuten ist der Zauberwürfel ratzfatz gelöst
 - (Computer, Mathematik, programmieren)