B
BlueLizard
Gast
Ich weiß, noch ein Thema und dann um die Uhrzeit aber ich brauche noch ein Denkanstoß, diese Woche ist echt der Wurm drin.
Ich soll folgende Aufgabe bearbeiten:
Wird ein Kartenspiel oft genug perfekt gemischt, nimmt er seine ursprüngliche Reihenfolge wieder an.
Schreiben Sie nun eine Methode die eine beliebige gerade Zahl n>0 als Größe eines Kartenstapels akzeptiert. Die Methode gibt zurück, wie oft ein Kartenstapel dieser Größe höchstens perfekt gemischt werden muss, damit er seine ursprüngliche Reihenfolge wieder annimmt.
Beispiel ist ein Kartenspiel n=52 als Ergebnis soll 8 raus kommen.
Ich habe noch 2 andere Methoden zur Verfügung (welche bereits auf richtigkeit überprüft wurden ):
Meine eigentliche Frage ist jetzt wie man sowas berechnen kann? Da muss es ja einen Zusammenhang geben. Mir würde vermutlich ein Wort schon reichen
Danke für die Hilfe im Vorraus schon mal
Ich soll folgende Aufgabe bearbeiten:
Wird ein Kartenspiel oft genug perfekt gemischt, nimmt er seine ursprüngliche Reihenfolge wieder an.
Schreiben Sie nun eine Methode die eine beliebige gerade Zahl n>0 als Größe eines Kartenstapels akzeptiert. Die Methode gibt zurück, wie oft ein Kartenstapel dieser Größe höchstens perfekt gemischt werden muss, damit er seine ursprüngliche Reihenfolge wieder annimmt.
Beispiel ist ein Kartenspiel n=52 als Ergebnis soll 8 raus kommen.
Ich habe noch 2 andere Methoden zur Verfügung (welche bereits auf richtigkeit überprüft wurden ):
Code:
public static int[] interleave(int[] a1, int[] a2) {
int[] a3 = new int[a1.length + a2.length];
for (int i = 0; i < a1.length;) {
for (int j = 0; j < a3.length; ) {
a3[j] = a1[i];
j = j + 2;
i++;
}
}
for (int i = 0; i < a2.length;) {
for (int j = 1; j < a3.length; ) {
a3[j] = a2[i];
j = j + 2;
i++;
}
}
return a3;
}
public static int[] perfectShuffle(int[] a) {
if (a.length % 2 != 0) return a;
int j=0;
int zähl=0;
int[] b = new int[a.length/2];
int[] c = new int[a.length/2];
for (int i = 0;i < b.length;i++) {
b[i] = a[i];
j++;
}
for (int i = 0;i < c.length;i++) {
c[i] = a[j];
j++;
}
a = interleave(b,c);
return a;
}
Meine eigentliche Frage ist jetzt wie man sowas berechnen kann? Da muss es ja einen Zusammenhang geben. Mir würde vermutlich ein Wort schon reichen
Danke für die Hilfe im Vorraus schon mal