Skip to content

Funktionsweise

Paul Jonas edited this page Nov 25, 2024 · 7 revisions

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:

MainFunction

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
Loading

Der Originalcode sieht folgendermaßen aus:

MainFunction

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
Loading

Motor Funktionen

Die Motor Funktionen sind der kleinste gemwinsame Nenner aller weiteren Funktionen. Sie beinhalten als einzige dierekte Anweisungen an die Motoren.

RotateCube

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
Loading

TipCube

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
Loading

RotateBottom

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
Loading

Grundbewegugen

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.

RotateRight

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
Loading

RotateLeft

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
Loading

RotateTop

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
Loading

RotateFront

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
Loading

Basisalgorithmen

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.

swap-OppositeTopEdges

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
Loading

swap-AdjacentTopEdges

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
Loading

swap-oppositeCorners

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
Loading

swap-MidEdgesRight

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
Loading

swap-MidEdgesLeft

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
Loading

swap-BottomYellowEdges

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
Loading

swap-AdjacentBottomEdges

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
Loading

swap-oppositeBottomEdges

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
Loading

swap-BottomCorners

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
Loading

Algorithmus Teilfunktionen

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.

WhiteCrossTiny

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.

WhiteCrossLarge

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.

TopCorner

Der TopCorners Algorithmus

MidEdges

YellowCrossTiny

YellowCrossLarge

BottomCorners

Weitere Funktionen

Reset Function

ScanCube

Randomize Function

<a href=''>\ Ausgabe // Eingabe