Algorithmie en Java

egaetan
53.9K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Bataille [Facile]

Inspiré de BattleDev Novembre2017

Enoncé

Un soir, deux frères profitent de l'absence de leurs parents pour commander des burgers. Pour ne pas laisser de trace, l'un d'entre eux doit descendre les poubelles avant minuit. Ils dĂ©cident de se dĂ©partager au jeu de la bataille. Le principe est simple, chaque joueur a le mĂªme nombre de cartes et Ă  chaque tour, chaque joueur prĂ©sente une carte. Celui qui a la carte de plus grande valeur remporte le point. Si les deux cartes ont la mĂªme valeur, personne ne remporte le point. Le gagnant du jeu est celui qui a le plus de points Ă  la fin.

L'objectif de ce challenge est de déterminer qui ne descendra pas les poubelles ce soir (gagnant de la partie).

On va nommer les deux frères A et B. Pour simplifier, nous allons considérer que les cartes ont des valeurs pouvant aller de 1 à 10. Nous vous garantissons qu'il y a bien un gagnant à la fin de la partie (pas d'égalité possible entre les deux joueurs).

Format des données

Entrée

Ligne 1 : un entier N compris entre 10 et 100 représentant le nombre de tours.

Lignes 2 à N+1 : deux entiers compris entre 1 et 10 séparés par un espace représentant la carte du joueur A et celle du joueur B.

Sortie

Le caractère A ou le caractère B représentant le gagnant de la partie.

Explications
Lecture des entrées

Il faut tout d'abord lire les données d'entrées

	Scanner sc = new Scanner(System.in);
	int nombreDeTours = sc.nextInt();
	sc.nextLine();

Puis dans une boucle lire les cartes des joueurs A et B

	for (int i = 0; i< n; i++) {		
		int carteJoueurA = sc.nextInt();
		int carteJoueurB = sc.nextInt();

		sc.nextLine();
	}

đŸ’¡ il ne faut pas oublier le sc.nextLine() pour passer Ă  la ligne suivante.

Compter les points

Il faut compter les points de chacun des joueurs dans la boucle. Les variables comptant les points sont définies en dehors de la boucle

	int pointsJoueurA = 0;
	int pointsJoueurB = 0;
	for (int i = 0; i< n; i++) {		
		int carteJoueurA = sc.nextInt();
		int carteJoueurB = sc.nextInt();

		if (carteJoueurA > carteJoueurB) {
			pointsJoueurA++;
		}
		else if (carteJoueurB > carteJoueurA) {
			pointsJoueurB++;
		}
		
		sc.nextLine();
	}

đŸ’¡ il ne faut pas oublier le cas d'Ă©galitĂ©, oĂ¹ les scores des joueurs ne changent pas. Ici, il est implicite, grĂ¢ce au else if.

Afficher le résultat
	System.out.println(pointsJoueurA > pointsJoueurB ? "A" : "B");

Il faut Ă©crire "A" ou "B" suivant leurs points respectifs.

đŸ’¡ On peut ici utiliser une expression ternaire, qui montre efficacement l'alternative.

Bataille
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content