void main() { boolean geradeAnzahl = true; // 0 Koerner eingesammelt geradeAnzahl = sammle(); while (vornFrei()) { vor(); boolean gesammelt = sammle(); /* * gerade Zahl + gerade Zahl = gerade Zahl * ungerade Zahl + ungerade Zahl = gerade Zahl * alle anderen Faelle ergeben eine ungerade Zahl */ geradeAnzahl = (geradeAnzahl && gesammelt) || (!geradeAnzahl && !gesammelt); } /* * falls gerade Anzahl an Koernern gefunden: * alle Koerner ablegen */ if (geradeAnzahl) { while (!maulLeer()) { gib(); } } } /* * sammle alle Koerner auf aktuellem Feld auf; falls gerade * Anzahl an Koernern eingesammelt wurde, liefere true; * ansonsten liefere false */ boolean sammle() { boolean geradeAnzahl = true; // 0 Koerner eingesammelt while (kornDa()) { nimm(); /* * auf jede gerade folgt eine ungerade * Zahl und umgekehrt */ geradeAnzahl = !geradeAnzahl; } return geradeAnzahl; }