Levy-C-Kurve:
Die Levy-C-Kurve wird zunächst mit den Zeichen F, +, - gebildet.
Die Zeichenkette c(0) = F repräsentiert die Levy-C-Kurve der Ordnung 0.
Sei c(i) die Zeichenkette der Levy-C-Kurve mit Ordnung i, dann ist c(i+1) = + c(i) - - c(i) + die Zeichenkette der Levy-C-Kurve mit Ornung i + 1.
Um die Levy-C-Kurve mit F, L, R zu repräsentieren, werden zuerst die Zeichen vor dem ersten und nach dem letzten F entfernt. Da sich zwischen F immer eine gerade Anzahl sowohl an + als auch an - befindet, können diese durch L und R ersetzt werden (gleiche Anzahl von + und - hebt sich auf).
Beispiel:
Ordnung 0: F
Ordnung 1: + F - - F + → FLF
Ordnung 2: + + F - - F + - - + F - -F + + → FLFFLF
Ordnung 3: + + + F - - F + - - + F - - F + + - - + + F - - F + - - + F - - F + + + → FLFFLFRFLFFLF
Aufgabenstellung:
Benutzen Sie eine Methode, die in einem Feld von char eine Levy-C-Kurve mit Zeichen F, + , - übergeben bekommt und +, - wie oben beschrieben durch L, R ersetzt. Dabei soll kein neues Feld erzeugt, sondern das übergebene Feld so bearbeitet werden, dass es die F-L-R enthält.
Problem:
Meine Methode erstellt ein Feld für die Ordnungen 1, 2, 3 mit +, - und F. Meine Frage ist jetzt wie ich dieses Feld in ein Feld umwandle wo + und - durch L und R ersetzt werden.
Mein Code:
public class Fraktale {
public static void main(String[]args) {
int k = Integer.parseInt(args[0]); // k wird eingelesen
char check = args[1].charAt(0); // der erste Character der zweiten Eingabe wird eingelesn und in check geschrieben
if (check == 'L') { // zweite Eingabe 'L' um Levy-C-Kurve anzusprechen
if (k <= 0 || k > 20) { // überprüfe ob die Eingabe im zugelassenen Intervall liegt
System.out.println("0 < n < 20)");
System.exit(0);
}
levyc(k);
}
}
// Lévy-C-Kurve:---------------------------------------------------------------
public static void levyc(int x) {
char [] c = new char[1]; // neues Array c (C-Kurve) wird mit der Länge 1 initialisiert
c[0] = 'F'; // 0-te Folge ist 'F'
for (int i = 0; i < x; i++) { // Schleife läuft i mal durch für k-Folgen
char [] tmp = new char [2*c.length +4]; // temporäres Array tmp wird auf die Länge der neuen Folge gesetzt (c[i+1] = +ci--ci+) = 4+2*(Länge der alten Folge)
tmp[0] = '+'; // an die erste...
tmp[tmp.length-1] = '+'; // ...und letzte Stelle wird '+' geschrieben
tmp[(tmp.length/2)-1] = '-';
tmp[(tmp.length/2)] = '-'; // an die mittleren zwei Stellen wird '-' geschrieben
for (int j = 0; j < c.length; j++) { // die Werte der vorigen Folge werden in tmp geschrieben
tmp[(j+1)] = c[j]; // die Werte von tmp werden um eins versetzt und in c geschrieben
tmp[((tmp.length/2)+1)+j] = c[j]; // die gleichen Werte von tmp werden nach der halben Länge in c geschrieben
}
c = tmp;
}
for (int j = 0; j < c.length; j++){ // gebe Folge aus
System.out.print(c[j]);
}
System.out.println()
return;
}
}
Die Levy-C-Kurve wird zunächst mit den Zeichen F, +, - gebildet.
Die Zeichenkette c(0) = F repräsentiert die Levy-C-Kurve der Ordnung 0.
Sei c(i) die Zeichenkette der Levy-C-Kurve mit Ordnung i, dann ist c(i+1) = + c(i) - - c(i) + die Zeichenkette der Levy-C-Kurve mit Ornung i + 1.
Um die Levy-C-Kurve mit F, L, R zu repräsentieren, werden zuerst die Zeichen vor dem ersten und nach dem letzten F entfernt. Da sich zwischen F immer eine gerade Anzahl sowohl an + als auch an - befindet, können diese durch L und R ersetzt werden (gleiche Anzahl von + und - hebt sich auf).
Beispiel:
Ordnung 0: F
Ordnung 1: + F - - F + → FLF
Ordnung 2: + + F - - F + - - + F - -F + + → FLFFLF
Ordnung 3: + + + F - - F + - - + F - - F + + - - + + F - - F + - - + F - - F + + + → FLFFLFRFLFFLF
Aufgabenstellung:
Benutzen Sie eine Methode, die in einem Feld von char eine Levy-C-Kurve mit Zeichen F, + , - übergeben bekommt und +, - wie oben beschrieben durch L, R ersetzt. Dabei soll kein neues Feld erzeugt, sondern das übergebene Feld so bearbeitet werden, dass es die F-L-R enthält.
Problem:
Meine Methode erstellt ein Feld für die Ordnungen 1, 2, 3 mit +, - und F. Meine Frage ist jetzt wie ich dieses Feld in ein Feld umwandle wo + und - durch L und R ersetzt werden.
Mein Code:
public class Fraktale {
public static void main(String[]args) {
int k = Integer.parseInt(args[0]); // k wird eingelesen
char check = args[1].charAt(0); // der erste Character der zweiten Eingabe wird eingelesn und in check geschrieben
if (check == 'L') { // zweite Eingabe 'L' um Levy-C-Kurve anzusprechen
if (k <= 0 || k > 20) { // überprüfe ob die Eingabe im zugelassenen Intervall liegt
System.out.println("0 < n < 20)");
System.exit(0);
}
levyc(k);
}
}
// Lévy-C-Kurve:---------------------------------------------------------------
public static void levyc(int x) {
char [] c = new char[1]; // neues Array c (C-Kurve) wird mit der Länge 1 initialisiert
c[0] = 'F'; // 0-te Folge ist 'F'
for (int i = 0; i < x; i++) { // Schleife läuft i mal durch für k-Folgen
char [] tmp = new char [2*c.length +4]; // temporäres Array tmp wird auf die Länge der neuen Folge gesetzt (c[i+1] = +ci--ci+) = 4+2*(Länge der alten Folge)
tmp[0] = '+'; // an die erste...
tmp[tmp.length-1] = '+'; // ...und letzte Stelle wird '+' geschrieben
tmp[(tmp.length/2)-1] = '-';
tmp[(tmp.length/2)] = '-'; // an die mittleren zwei Stellen wird '-' geschrieben
for (int j = 0; j < c.length; j++) { // die Werte der vorigen Folge werden in tmp geschrieben
tmp[(j+1)] = c[j]; // die Werte von tmp werden um eins versetzt und in c geschrieben
tmp[((tmp.length/2)+1)+j] = c[j]; // die gleichen Werte von tmp werden nach der halben Länge in c geschrieben
}
c = tmp;
}
for (int j = 0; j < c.length; j++){ // gebe Folge aus
System.out.print(c[j]);
}
System.out.println()
return;
}
}