Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
Hydroponie [Moyen]
Inspiré de BattleDev Novembre2017
Enoncé
Il y a fort longtemps, dans une galaxie lointaine, très lointaine… Vous habitez une planète dĂ©sertique Ă deux soleils, et Ăªtes le modeste exploitant d’une ferme hydroponique. Votre exploitation est reprĂ©sentĂ©e par une grille carrĂ©e sur laquelle sont disposĂ©s des Ă©vaporateurs d’humiditĂ©. Chaque Ă©vaporateur d’humiditĂ© irrigue et rend ainsi cultivables les 8 cases qui lui sont adjacentes (on ne peut rien cultiver sur une case contenant un Ă©vaporateur d’humiditĂ©).
Le but de ce challenge est de déterminer le nombre de cases cultivables de votre exploitation.
Format des données
Entrée
Ligne 1: un entier N compris entre 3 et 50 représentant la taille de votre ferme (une grille carrée de dimension N x N)
Lignes 2 à N+1: les lignes de la carte représentées par des chaînes de N caractères. Les caractères de la ligne sont soit X
(un Ă©vaporateur) soit .
(une case vide).
Sortie
Un entier représentant le nombre de cases cultivables de votre ferme.
Explications
Lecture des entrées
Il faut tout d'abord lire la taille de la carte
Scanner sc = new Scanner(System.in);
int taille = sc.nextInt();
sc.nextLine();
Puis dans une double boucle lire la carte
for (int i = 0; i < taille; i++) {
line = sc.nextLine();
for (int j = 0; j < n; j++) {
switch (line.charAt(j)) {
case 'X':
/* evaporateur en (j, i) */
break;
case '.'
/* case vide en (j, i) */
break;
}
}
}
đŸ’¡
String.charAt(int index)
pour accéder au ième caractère d'une chaîne de caractères
Algorithme
Le sujet consiste Ă compter des cases :
- Sans compter deux fois la mĂªme case (irriguĂ©e par deux Ă©vaporateurs)
- En ignorant certaines cases (contenant un Ă©vaporateur)
- Sans sortir de la grille (un évaporateur sur un bord, n'irrigue que les cases à l'intérieur de la grille)