public class Nimm {


	public static void main(String[] args) {

		boolean playersTurn;
		// Einlesen der Anzahl der Münzen
		int stack = readNrCoins();

		// Bestimmen wer beginnt
		playersTurn = playerMayBegin();

		do {
			// Fall 1: Spieler ist am Zug
			if (playersTurn) {

				//    Lese ein wieviel er nehmen will
				int coins = readDraw(stack);
				printDraw(coins);
				//    Stapel - genommene Münzen
				stack = stack - coins;
			} else {
				// Fall 2: Computer ist am Zug
				//    Berechnen wieviel Computer nehmen will
				int coins = computeDraw(stack);
				printDraw(coins);
				//    Stapel - genommene Münzen
				stack = stack - coins;
			}
			printStack(stack);
			playersTurn = ! playersTurn;
		// solange Münzen am Stapel sind
		} while (stack > 0);

		// Bestimmen wer gewonnen hat
		if (playersTurn) {
			Out.println("Spieler hat gewonnen!");
		} else {
			Out.println("Computer hat gewonnen!");
		}
	}


	static int readDraw(int st) {
		Out.print("Wie viele willst Du nehmen? ");
		int c = In.readInt();
		while (c < 1 || c > 3 || c > st) {
			Out.print("Fehlerhafte Eingabe! Bitte wiederholen: ");
			c = In.readInt();
		}
		return c;
	}

	static int readNrCoins() {
		Out.print("Bitte Anzahl Münzen eingeben: ");
		return In.readInt();
	}

	static boolean 	playerMayBegin() {
		if (Math.random() < 0.5) {
			// Spieler
			return true;
		} else {
			// Computer
			return false;
		}
	}

	static int computeDraw(int stack) {
		int d = (stack - 1) % 4;
		if (d == 0) {
			return 1;
		} else {
			return d;
		}
	}

	static void printStack(int stack) {
		Out.println("Stapel = " + stack);
	}

	static void printDraw(int coins) {
		Out.println(" --> genommen: " + coins);
	}

}
