Rubix cube möglichkeiten berechnen?
Hallo, ich versuche eine funktion in einer beliebigen programmiersprache zu schreiben mit einer nummer als argument, die einen rubix cube mit x*x seiten und längen berechnet, also funktion(3) gibt 43 252 003 274 489 856 000 zurück da ein 3x3 rubix cube so viele mögliche kombinationen hat, kann mit da wer helfen oder hat so einen alygorythmus schon geschrieben ?
4 Antworten
Da wird gezeigt wie sich die Zahl für 3 berechnet lässt, die anderen werden analog sein: https://de.wikipedia.org/wiki/Zauberw%C3%BCrfel#Mathematik
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.
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