-
Notifications
You must be signed in to change notification settings - Fork 0
Funktionsweise
Eine gute Dokumentation in Scratch zu schreiben ist nicht gerade einfach. Darum wir der größte Teil der Dokumentation hier erscheinen. Insgesamt esistieren drei verschiedene Versionen des Programms.
- Die mit
*
gekennzeichneten Blöke und Funktionen sind exklusiv für das CubeSolver Programm. - Die mit
**
gekennzeinetemn Blöke und Funktionen sind exklusiv für das CubeRandomizer Programm. Programm - Die Unterschiede der beiden CubeSolver Variationen werden nicht abgebildet.
Die Fumktionen sind mach ihrer inneren Struktur in Abschniitte eingeteilt Eingabeparameter der Funktionen sind tabelarisch aufgelistet. Um es verständlicher zu halten, werden hier keine Screenshots des Orginalcodes verwendet, sondern ledigleich Flussdiagramme, die diese nachbilden. Das sieht am Beispiel der MainFunction wie folgt aus:
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
A(Start):::yellow
SC[/<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#ScanCube'>ScanCube*</a>/]:::pink
R[<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#Reset-Function'>Reset</a>]:::pink
WCT[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#whitecrosstiny'>WhiteCrossTiny*</a>\]:::pink
WCL[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#whitecrosslarge'>WhiteCrossLarge*</a>\]:::pink
TC[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#TopCorner'>TopCorner*</a>\]:::pink
ME[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#MidEdges'>MidEdges*</a>\]:::pink
YCT[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#YellowCrossTiny'>YellowCrossTiny*</a>\]:::pink
YCL[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#YellowCrossLarge'>YellowCrossLarge*</a>\]:::pink
BC[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#BottomCorners'>BottomCorners*</a>\]:::pink
F(Finished):::yellow
A-->R-->SC-->WCT-->WCL-->TC-->ME-->YCT-->YCL-->BC-->F
Der Originalcode sieht folgendermaßen aus:
In der MainFunction fliießen alle Prozesse zusammen, die für das Programm relevant sind. Die wird als einzige zu Beginn des Programms ausgeführt. Die MainFunction des Only-firstRow Programms ist lediglich etwas kürtzer und endet mit der TopCorners function. Die MainFunction des RandomizeCube Programms sieht etwas anders aus:
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
S(Start):::yellow
R[<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#Reset-Function'>Reset</a>]:::pink
RD[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#Randomize-Function'>Randomize*</a>\]:::pink
F(Finished):::yellow
S-->R-->RD-->F
Die Motor Funktionen sind der kleinste gemwinsame Nenner aller weiteren Funktionen. Sie beinhalten als einzige dierekte Anweisungen an die Motoren.
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
prim | boolien | gibt die Drehrichtung an (TRUE = im Uhrzeigersinn; FALSE = gegen den Uhrzeigersinn) |
Die Funktion rotiert den Würfel um die z-Achse.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
M1[\Würfel um 90 im Uhrzeigersinn drehen\]:::blue
!M1[\Würfel um 90° gegen den Uhrzeigersinn drehen\]:::blue
S(Start):::yellow
P{Prim}:::orrange
T{Anzahl <br> Wiederhohlungen <br> < times}:::orrange
F(Finished):::yellow
S-->P
P--True--> M1
P--False-->!M1
M1 & !M1 -->T
T--True-->S
T--False-->F
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
Die Funktion rotiert den Würfel um die y-Achse. Danach fährt der Arm in seine Ausgangsposition zurück.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
M1[\Arm um 220° im Uhrzeigersinn drehen\]:::blue
M2[\Arm um 220° gegen den Uhrzeigersinn drehen\]:::blue
T{Anzahl <br> Wiederhohlungen <br> < times}:::orrange
S(Start):::yellow
F(Finished):::yellow
S-->M1-->M2-->T
T--True-->S
T--False-->F
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
prim | boolien | gibt die Drehrichtung an (TRUE = im Uhrzeigersinn; FALSE = gegen den Uhrzeigersinn) |
Um die untere Ebene zu rotieren, wird der Arm über die beiden oberen gelegt, sodass sie sich nicht mitdrehen, wenn der Würfel bewegt wird
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
M1[\Würfel um 90° im Uhrzeigersinn drehen\]:::blue
!M1[\Würfel um 90° gegen den Uhrzeigersinn drehen\]:::blue
M2[\Arm um 80° im Uhrzeigersinn drehen\]:::blue
!M2[\Arm um 80° gegen den Uhrzeigersinn drehen\]:::blue
S(Start):::yellow
F(Finished):::yellow
P{Prim}:::orrange
T{Anzahl <br> Wiederhohlungen <br> < times}:::orrange
S-->M2-->P
P--True-->M1
P--False-->!M1
M1 & !M1 --> T
T--True-->S
T--False-->!M2-->F
Die Grundbewegungen sind eine Ebene komplexer, als die Motor Funktionen. Sie sind jewails aus mehreren Motor Funktionen zusammengesetzt.
Obgleich wir die Beiden Arten hier getrennt betrachten, spielt diese Unterscheidung später keine Rolle mehr, da sie in den Algorithmen beide als kleinste gemeinsame Einheit betrachtet werden.
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
prim | boolien | gibt die Drehrichtung an (TRUE = im Uhrzeigersinn; FALSE = gegen den Uhrzeigersinn) |
Die RotateRight Funktion Rotiert die rechte Seite des Würfels.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RB[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {times} {prim}</a>"\]:::pink
TC-1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {1}</a>"\]:::pink
TC-3[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {3}</a>"\]:::pink
RC-1F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatecube'>RotateCube {1} {False}</a>"\]:::pink
RC-1T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatecube'>RotateCube {1} {True}</a>"\]:::pink
S-->RC-1T-->TC-1-->RB-->TC-3-->RC-1F-->F
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
prim | boolien | gibt die Drehrichtung an (TRUE = im Uhrzeigersinn; FALSE = gegen den Uhrzeigersinn) |
Die RotateRight Funktion Rotiert die linke Seite des Würfels.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RB[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {times} {prim}</a>"\]:::pink
TC-1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {1}</a>"\]:::pink
TC-3[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {3}</a>"\]:::pink
RC-1F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatecube'>RotateCube {1} {False}</a>"\]:::pink
RC-1T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatecube'>RotateCube {1} {True}</a>"\]:::pink
S-->RC-1F-->TC-1-->RB-->TC-3-->RC-1T-->F
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
prim | boolien | gibt die Drehrichtung an (TRUE = im Uhrzeigersinn; FALSE = gegen den Uhrzeigersinn) |
Die RotateRight Funktion Rotiert die rechte obere des Würfels.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RB[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {times} {prim}</a>"\]:::pink
TC[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {2}</a>"\]:::pink
TC-2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {2}</a>"\]:::pink
S-->TC-->RB-->TC-2-->F
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
prim | boolien | gibt die Drehrichtung an (TRUE = im Uhrzeigersinn; FALSE = gegen den Uhrzeigersinn) |
Die RotateRight Funktion Rotiert die vordere Seite des Würfels.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RB[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {times} {prim}</a>"\]:::pink
TC-1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {1}</a>"\]:::pink
TC-3[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#tipcube'>TipCube {3}</a>"\]:::pink
S-->TC-1-->RB-->TC-3-->F
Basisalgorithmen sin diejenigen, die Menschen auswendig lernen, wenn sie einen Zauberwürfel lösen möchten. Sie dienen dazu, bestimte Quardrate am Würfel an eine bestimmte Position zu bringen.
Dieser Algorithmus wird verwendet, um die gegenüberligenden oberen Kanten einer Seite zu vertauschen, um ein weißes Kreuz zu erhalten.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RB[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {2} {False}*</a>"\]:::pink
RR-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {2} {True}*</a>"\]:::pink
RR-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {2} {False}*</a>"\]:::pink
RL-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateleft'>RotateLeft {2} {True}*</a>"\]:::pink
RL-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateleft'>RotateLeft {2} {False}*</a>"\]:::pink
S-->RR-F-->RL-T-->RB-->RL-F-->RR-T-->F
Dieser Algorithmus wird verwendet, um die nebeneinanderliegenden oberen Kanten einer Seite zu vertauschen, um ein weißes Kreuz zu erhalten.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RF[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatefront'>RotateFront {2} {True}*</a>"\]:::pink
RR-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {2} {True}*</a>"\]:::pink
RR-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {2} {False}*</a>"\]:::pink
RB-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {1} {True}*</a>"\]:::pink
RB-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {1} {False}*</a>"\]:::pink
S-->RR-F-->RB-F-->RF-->RB-T-->RR-T-->F
Dieser Algorithmus wird verwendet, um um zwei Ecken zu vertauschen, die übereinander stehen oder um eine Ecke in sich selbst zu drehen.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RR-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {True}*</a>"\]:::pink
RR-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {True}*</a>"\]:::pink
RB-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {1} {False}*</a>"\]:::pink
RB-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatebottom'>RotateBottom {1} {False}*</a>"\]:::pink
S-->RR-F-->RB-F-->RR-T-->RB-T-->F
Dieser Algorithmus wird verwendet, um eine die untere Kante nach rechts zu verschieben, um die mittlere Ebene zu vervollständigen.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RT-T1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-T2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-F1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {False}*</a>"\]:::pink
RT-F2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {False}*</a>"\]:::pink
RR-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {True}*</a>"\]:::pink
RR-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {False}*</a>"\]:::pink
RF-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatefront'>RotateFront {1} {True}*</a>"\]:::pink
RF-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatefront'>RotateFront {1} {False}*</a>"\]:::pink
S-->RT-T1-->RR-T-->RT-F1-->RR-F-->RT-F2-->RF-F-->RT-T2-->RF-T-->F
Dieser Algorithmus wird verwendet, um eine die untere Kante nach links zu verschieben, um die mittlere Ebene zu vervollständigen.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RT-T1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-T2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-F1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {False}*</a>"\]:::pink
RT-F2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {False}*</a>"\]:::pink
RL-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateleft'>RotateLeft {1} {True}*</a>"\]:::pink
RL-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateleft'>RotateLeft {1} {False}*</a>"\]:::pink
RF-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatefront'>RotateFront {1} {True}*</a>"\]:::pink
RF-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatefront'>RotateFront {1} {False}*</a>"\]:::pink
S-->RT-F1-->RL-F-->RT-T1-->RL-T-->RT-T2-->RF-T-->RT-F2-->RF-F-->F
Parameter | Datentyp | Funktion |
---|---|---|
times | intiger | gibt die Anzahl an Umdrehungen an |
Dieser Algorithmus wird verwendet, um gegenüberliegende Kanten der Unterseite zu tauschen, um das gelbe Kreuz zu erhalten.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
T{Anzahl <br> Wiederhohlungen <br> < times}:::orrange
RR-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {True}*</a>"\]:::pink
RR-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {False}*</a>"\]:::pink
RT-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {False}*</a>"\]:::pink
RF-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatefront'>RotateFront {1} {True}*</a>"\]:::pink
RF-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatefront'>RotateFront {1} {False}*</a>"\]:::pink
S-->RR-F-->RT-F-->RF-F-->RT-T-->RF-T-->RR-T-->T
T--True-->S
T--False-->F
Dieser Algorithmus wird verwendet, um nebeneinanderliegende Kanten der Unterseite zu tauschen, um das gelbe Kreuz zu erhalten.
flowchart TB
S(Start):::yellow
F(Finished):::yellow
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
RR-T1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {True}*</a>"\]:::pink
RR-T2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {True}*</a>"\]:::pink
RR-F1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {False}*</a>"\]:::pink
RR-F2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {False}*</a>"\]:::pink
RT-T1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-T2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-T3[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {2} {True}*</a>"\]:::pink
RT-T4[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
S-->RR-T1-->RT-T1-->RR-F1-->RT-T2-->RR-T2-->RT-T3-->RR-F2-->RT-T4-->F
Dieser Algorithmus wird verwendet, um gegenüberliegende Kanten der Unterseite zu tauschen, um das gelbe Kreuz zu erhalten.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
SATE-1[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#swap-adjacenttopedges'>swap-AdjacentBottomEdges*</a>\]:::pink
SATE-2[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#swap-adjacenttopedges'>swap-AdjacentBottomEdges*</a>\]:::pink
SATE-3[\<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#swap-adjacenttopedges'>swap-AdjacentBottomEdges*</a>\]:::pink
RC-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatecube'>RotateCube {1} {True}</a>"\]:::pink
RC-F1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatecube'>RotateCube {1} {False}</a>"\]:::pink
RC-F2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatecube'>RotateCube {1} {False}</a>"\]:::pink
S-->RC-F1-->SATE-1-->RC-T-->SATE-2-->RC-F2-->SATE-3-->F
Dieser Algorithmus wird verwendet, um die Ecken an der Unterseite untereinander zu tauschen.
flowchart TB
classDef pink fill:#ff6680,stroke:#ff4463, stroke-width:1.5px
classDef yellow fill:#f5c400,stroke:#c0a51d, stroke-width:1.5px
classDef orrange fill:#ffb515,stroke:#cc9010, stroke-width:1.5px
classDef blue fill:#0090f5,stroke:#0265a9, stroke-width:1.5px
S(Start):::yellow
F(Finished):::yellow
RR-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {True}*</a>"\]:::pink
RR-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateright'>RotateRight {1} {False}*</a>"\]:::pink
RL-T[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateleft'>RotateLeft {1} {True}*</a>"\]:::pink
RL-F[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotateleft'>RotateLeft {1} {False}*</a>"\]:::pink
RT-T1[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-T2[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
RT-T3[\"<a href='https://github.com/RedLion8399/EV3_rubiks_cube-solver/wiki/Funktionsweise#rotatetop'>RotateTop {1} {True}*</a>"\]:::pink
S-->RL-F-->RT-T1-->RR-T-->RT-T2-->RL-T-->RT-T3-->RR-F-->F
Die Algorithmus Teilfunktionen setzen sich aus einer nicht vorher bestimmbaren Abfolge der Basisalgorithmen zusammen. Sie Sind die einzelnen Abschnitte beim Lösen des Zauberwürfels, wobei jeder Abschnitt eigene Basisalgorithmen mit sich bringt und ein bestimmtes zwischenziel verfolgt. Ab hier kommt im Flussdiagramm eine Vereinfachte darstellung um Einsatz, da hier viele zusätzliche SChritte benötigt werde, ie beim eigentlcihen Lösen des Zauberwürfels nicht erforderlich wären.
Das Ziel der WhiteCrossTiny Function ist es, ein kleines weißes Kreuz zu erstellen. Damit ist gemeint, dass sowohl der Mittelpunkt einer Fläche, als auch die Kanten dieser Fläche weiß sind.
Die WhiteCrossLarge Funktion ist eine erweiterung der WhiteCrossTiny Funktion. Es geht darum, Die Mittelpunkte und oberen Kanten der Seitenflächen so zu drehen, dass jewails gleichfarbige Mittelpunkte und Kanten übereinander liegen.
Der TopCorners Algorithmus