We were unable to load Disqus. If you are a moderator please see our troubleshooting guide.

hgluyf • 1 week ago


// {
package com.egaetan;
// }

/*******
* Lire les donnees depuis System.in
* Utilise System.out.println pour afficher le resultat
* Utilise System.err.println pour afficher des donnees de debug
* ***/
import java.util.*;

public class RobotsLunaires {

public void main() {
String position;
String[] instructions;
Scanner sc = new Scanner(System.in);
String maxXY = sc.nextLine();
while(sc.hasNextLine()) {
position = sc.nextLine();
int x = Integer.parseInt(position.split(" ")[0]);
int y = Integer.parseInt(position.split(" ")[1]);
String orientation = position.split(" ")[2];
instructions = sc.nextLine().split("");
for (String instruction : instructions) {
if(!instruction.equals("M")) {
orientation = calculateOrientation(orientation, instruction);
} else {
if(orientation.equals("N")) {
y++;
} else if (orientation.equals("S")) {
y--;
} else if (orientation.equals("E")) {
x++;
} else if (orientation.equals("W")) {
x--;
}
}
}
System.out.println(x + " " + y + " " + orientation);

}
}

public String calculateOrientation(String origin, String mvt) {
switch (origin) {
case "N" :
return (mvt.equals("L") ? "W" : "E");
case "W" :
return (mvt.equals("L") ? "S" : "N");
case "E" :
return (mvt.equals("L") ? "N" : "S");
case "S" :
return (mvt.equals("L") ? "E" : "W");
default : return "Unknow";
}
}
}

BigBoyCedric • 4 months ago

Mon résultat ci-dessous. J'ai eu un peu de mal à comprendre ce qui était attendu avec "valeurs 100".
Vu que le nombre maximum de tour est 100, il faut pas que cela dépasse.


// {

package com.egaetan;

// }

/*******

* Lire les donnees depuis System.in
* Utilise System.out.println pour afficher le resultat
* Utilise System.err.println pour afficher des donnees de debug

* ***/

import java.util.*;

public class Bataille {

public void main() {
String line;

Scanner sc = new Scanner(System.in);
int nombreDeTour = sc.nextInt();
if (nombreDeTour > 100){

nombreDeTour = 100;

} else if (nombreDeTour < 10){

nombreDeTour = 10;

}

int joueurA = 0;
int joueurB = 0;
while(sc.hasNextLine()) {

line = sc.nextLine();
for (; 0 < nombreDeTour; nombreDeTour-- ){

int carteA = sc.nextInt();
int carteB = sc.nextInt()

if (carteA == carteB){

} else if(carteA > carteB) {

joueurA++;
} else if(carteA < carteB){
joueurB++;

}

sc.nextLine();

}



/* Lisez les données et effectuez votre traitement */

}


System.out.println(joueurA > joueurB ? "A" : "B");

/* Vous pouvez aussi effectuer votre traitement une fois que vous avez lu toutes les données.*/

}

}

gordon00 • 1 year ago




Scanner sc = new Scanner(System.in);


final int tourTotalCount = Integer.parseInt(sc.nextLine());


int pointDifferential = 0;


System.err.println("Nombre de tours attendus : " + tourTotalCount);


int tourLoopCount = 0;


while(sc.hasNextLine() && tourLoopCount < tourTotalCount) {


tourLoopCount++;





int pointTour = Arrays.stream(sc.nextLine().split(" "))


.map(Integer::parseInt).limit(2).reduce((carteA, carteB) -> carteA.compareTo(carteB)).orElse(0);


pointDifferential += pointTour;





/* Lisez les données et effectuez votre traitement */


}




System.out.println(pointDifferential > 0 ? "A" : "B");


ClementD • 1 year ago

SPOIL réponse

Pour ma part :) ----->


/*******
* Lire les donnees depuis System.in
* Utilise System.out.println pour afficher le resultat
* Utilise System.err.println pour afficher des donnees de debug
* ***/
import java.util.*;

public class Bataille {

public void main() {
String line;
Scanner sc = new Scanner(System.in);

int a = 0;
int b = 0;
while(sc.hasNextLine()) {
line = sc.nextLine();
/* Lisez les données et effectuez votre traitement */
if (line.contains(" ")) {
int val1 = Integer.parseInt(line.split(" ")[0]);
int val2 = Integer.parseInt(line.split(" ")[1]);
if (val1 > val2) {
a++;
} else if (val2 > val1) {
b++;
}
}
}
System.out.println(a > b ? "A": "B");
}
}

ChrisFromParis • 1 year ago

C'est bon. J'ai trouvé une solution qui marche.

// {
package com.egaetan;
// }

/*******
* Lire les donnees depuis System.in
* Utilise System.out.println pour afficher le resultat
* Utilise System.err.println pour afficher des donnees de debug
* ***/
import java.util.*;

public class Bataille {

public void main() {
String line;
int nombreDeTours, cpt =1, carteJoueurA, carteJoueurB, scoreA=0,scoreB=0;

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

/* Lisez les données et effectuez votre traitement */
//while(sc.hasNextLine()) {
while(cpt < nombreDeTours+1) {
carteJoueurA = sc.nextInt();
carteJoueurB = sc.nextInt();

if(carteJoueurA < carteJoueurB)
{
scoreB++;
}else if(carteJoueurA > carteJoueurB)
{
scoreA++;
}

sc.nextLine();
cpt++;
}
/* Vous pouvez aussi effectuer votre traitement une fois que vous avez lu toutes les données.*/
System.out.println(scoreA > scoreB ? "A" : "B");
}
}

ChrisFromParis • 1 year ago

Comment valider le critère "100 valeurs" ? A quoi sert de trouver le nombre de tours si on ne l'exploite pas ?

// {
package com.egaetan;
// }

/*******
* Lire les donnees depuis System.in
* Utilise System.out.println pour afficher le resultat
* Utilise System.err.println pour afficher des donnees de debug
* ***/
import java.util.*;

public class Bataille {

public void main() {
String line;
int nombreDeTours, cpt =1, carteJoueurA, carteJoueurB, scoreA=0,scoreB=0;

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

/* Lisez les données et effectuez votre traitement */
while(sc.hasNextLine()) {
carteJoueurA = sc.nextInt();
carteJoueurB = sc.nextInt();

if(carteJoueurA < carteJoueurB)
{
scoreB++;
}else if(carteJoueurA > carteJoueurB)
{
scoreA++;
}

sc.nextLine();
}
/* Vous pouvez aussi effectuer votre traitement une fois que vous avez lu toutes les données.*/
System.out.println(scoreA > scoreB ? "A" : "B");
}
}

tinini • 2 years ago

public class Bataille {

public void main() {
String line;
Scanner sc = new Scanner(System.in);
Integer nombreDeTour = null;
List<integer> gamesA = new ArrayList<integer>();
List<integer> gamesB = new ArrayList<integer>();
int scoreA = 0;
int scoreB = 0;
while (sc.hasNextLine()) {
line = sc.nextLine();
Integer a = null;
Integer b = null;

/* Lisez les données et effectuez votre traitement */
if (nombreDeTour == null || nombreDeTour == 0) {
nombreDeTour = Integer.valueOf(line.trim());
continue;
}
String[] values = line.split(" ");
try {
a = Integer.valueOf(values[0]);
b = Integer.valueOf(values[1]);
} catch (Exception e) {
e.printStackTrace();
}
gamesA.add(a);
gamesB.add(b);

}
/*
* Vous pouvez aussi effectuer votre traitement une fois que vous avez lu toutes
* les données.
*/
if (nombreDeTour != null) {
for (int i = 0; i < nombreDeTour; i++) {
if (gamesA.get(i) > gamesB.get(i)) {
scoreA++;
} else if (gamesA.get(i) < gamesB.get(i)) {
scoreB++;
}
}
if (scoreA > scoreB) {
System.out.println("A");
} else {
System.out.println("B");
}
}

}
}

CoderGamer101 • 2 years ago

Bonjour,

Est ce qu'on peut avoir le jeu de données utilisé pour tester?

Moi j'utilise ça:
4 4
2 0 N
M M M R M R M L M
et mon programme me donne : 4 2 E mais ce programme ne passe pas. Je sais pas à quel niveau
Voici mon code :


/*******
* Lire les donnees depuis System.in
* Utilise System.out.println pour afficher le resultat
* Utilise System.err.println pour afficher des donnees de debug
* ***/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.*;

public class RobotsLunaires {

static int xMax = 0;
static int yMax = 0;
public static void main(String args[]){
String line;
Scanner sc = new Scanner(System.in);
xMax = sc.nextInt();
yMax = sc.nextInt();
line = sc.nextLine();

while(sc.hasNextLine()) {
line = sc.nextLine();
String intPox[] = line.split(" ");
int x = Integer.parseInt(intPox[0]);
int y = Integer.parseInt(intPox[1]);
String pos = intPox[2];
if(sc.hasNextLine()){
line = sc.nextLine();
String instructions[] = line.split(" ");
/* Lisez les données et effectuez votre traitement */
new RobotsLunaires().moveRobot(x,y,pos, instructions);
}
}
/* Vous pouvez aussi effectuer votre traitement une fois que vous avez lu toutes les données.*/
}

void moveRobot(int x, int y, String initDir, String instructions[]){
try{
Robot rob = new Robot(x,y,initDir);
for(String instr : instructions){
if("LR".contains(instr)){
rob.setDir(instr);
}else if("NWES".contains(instr)){
rob.setPos(instr);
}else if("M".equals(instr)){
rob.move();
}
}
System.out.println(rob.getX() + " " + rob.getY() + " " + rob.getPos());
}catch (Exception e){
System.err.println(e.getMessage());
}
}
}

class Robot{

private int x;
private int y;
private String pos;
public Robot(){}

public Robot(int x, int y, String pos) {
this.x = x;
this.y = y;
this.pos = pos;
}

public void move(){
switch (this.pos){
case "N":
setY(y+1);
break;
case "W":
setX(x-1);
break;
case "E":
setX(x+1);
break;
case "S":
setY(y-1);
break;
default:
}
}

public void setDir(String dir) throws Exception{
switch (this.pos){
case "N":
if(dir.equals("L")){
setPos("W");
}else if(dir.equals("R")){
setPos("E");
}
break;
case "W":
if(dir.equals("L")){
setPos("S");
}else if(dir.equals("R")){
setPos("N");
}
break;
case "E":
if(dir.equals("L")){
setPos("N");
}else if(dir.equals("R")){
setPos("S");
}
break;
case "S":
if(dir.equals("L")){
setPos("E");
}else if(dir.equals("R")){
setPos("W");
}
break;
default:
}
}

public int getX() {
return x;
}

public void setX(int x) {
if(x >= 0 && x <= RobotsLunaires.xMax){
this.x = x;
}else{
System.err.println("invalide value of x :"+ x);
}
}

public int getY() {
return y;
}

public void setY(int y) {
if(y >= 0 && y <= RobotsLunaires.yMax){
this.y = y;
}else{
System.err.println("invalide value of y :"+ y);
}
}

public String getPos() {
return pos;
}

public void setPos(String newPos) throws Exception{
if(!"NWES".contains(newPos)){
throw new Exception("Unkown position "+newPos );
}
this.pos = newPos;
}
}