Ich werfe einfach mal mit Code um sich:
[code=Java] private static boolean drei(int[] gewuerfelt) {
int[] anzahl = new int[7];
for (int i : gewuerfelt) {
anzahl[i]++;
}
for (int i : anzahl) {
if (i == 3) {
return true;
}
}
return false;
}
private static boolean vier(int[] gewuerfelt) {
int[] anzahl = new int[7];
for (int i : gewuerfelt) {
anzahl[i]++;
}
for (int i : anzahl) {
if (i == 4) {
return true;
}
}
return false;
}
private static boolean full(int[] gewuerfelt) {
int[] anzahl = new int[7];
for (int i : gewuerfelt) {
anzahl[i]++;
}
boolean b2 = false, b3 = false;
for (int i : anzahl) {
if (i == 2) {
b2 = true;
}
if (i == 3) {
b3 = true;
}
if (b2 && b3) {
return true;
}
}
return false;
}
@NotImplementedYet
private static boolean klein(int[] gewuerfelt) {
throw new UnsupportedOperationException();
}
private static boolean gross(int[] gewuerfelt) {
gewuerfelt = Arrays.copyOf(gewuerfelt, gewuerfelt.length);
Arrays.sort(gewuerfelt);
for (int i = 0; i < gewuerfelt.length - 1; i++) {
if (gewuerfelt[i] != gewuerfelt[i + 1] - 1) {
return false;
}
}
return true;
}[/code]
Wegen [icode]klein[/icode] schaue mal hier: http://stackoverflow.com/questions/15671620/small-straight-method
Das Problem ist, dass vier auch drei sein kann, full auch drei sein kann und gross auch klein sein kann . . . . Deswegen in umgekehrter Reihenfolge:
[code=Java] if (gross(ia)) {
System.out.println("gross");
}
// if (klein(ia)) {
// System.out.println("klein");
// }
if (full(ia)) {
System.out.println("full");
}
if (vier(ia)) {
System.out.println("vier");
}
if (drei(ia)) {
System.out.println("drei");
}[/code]
Mit if und Else ! ! ! !