Kleine Straße bei Kniffel erstellen, wie?

1 Antwort

Bei den ersten Argumenten soll eine 0 entstehen und bei den zweiten Argumenten eine 30.

Das ist falsch. "2 3 4 5 6" ist eine große Straße und bringt 40 Punkte. Hier sollte also keine 30 entstehen. Sondern lieber eine 0, da es sich bei einer großen Straße ja nicht um eine kleine Straße handelt, oder 40, falls der Algorithmus gleich beide Straßen-Typen erkennen soll.

Kleine Straße heißt, dass vier aufeinanderfolgende Zahlen vorkommen müssen. Also entweder 1,2,3,4 oder 2,3,4,5 oder 3,4,5,6. Nicht mehr, nicht weniger.

Man zählt also nun einfach, wieviele aufeinanderfolgende Zahlen es gibt, und wenn das 4 sind, dann hat man eine kleine Straße. Das geht wie folgt, wenn die Zahlen bereits sortiert sind:

public static int straights(int[] dice) {
    int consecutiveNumbers = 1;
    int last = dice[0];

    for(int i = 1; i < 5; i++) {
        if (dice[i] == last+1) consecutiveNumbers++;
        else if (dice[i] != last) consecutiveNumbers = 1;
        last = dice[i];
    }

   if (consecutiveNumbers == 4) return 30;
   else if (consecutiveNumbers == 5) return 40;
   else return 0;
}
Woher ich das weiß:Studium / Ausbildung – Bachelor in Informatik 👨🏻‍🎓