Nous avons un échiquier NxN dont les lignes et les colonnes sont numérotées de
1 jusqu'à N. Sur cet échiquier deux pièces se déplacent chacune leur tour d'une
seule case. Un pièce peut donc se déplacer dans l'une des huit directions
correspondant aux points cardinaux, soient Nord, Sud ,Est, Ouest et Nord-Est,
Sud-Est, Sud-Ouest et Nord-Ouest.
Vous devez concevoir un
programme qui calcule le déplacement de ces deux pièces en tenant bien compte
des règles suivantes :
1) A chaque tour on joue une seule pièce. D'un tour à l'autre on alterne de
pièce. Donc on déplace d'abord la première pièce
puis seconde etc...
2) La direction d'une pièce ne change que lorsqu'elle rencontre un obstacle
(c-à-d une case qui est soit occupée par l'autre pièce soit à l'extérieur de
l'échiquier).
3) Lorsqu'une pièce P rencontre un obstacle elle se comporte comme suit :
a) Si la case située dans la direction du mouvement est
occupée par l'autre pièce, P ne se déplace pas mais la direction de
son mouvement est inversée :
Nord
devient Sud
Sud
devient Nord
Est
devient Ouest
Ouest
devient Est
Nord-Est
devient Sud-Ouest
Sud-Est
devient Nord-Ouest
Sud-Ouest
devient Nord-Est
Nord-Ouest devient
Sud-Est
b) Si la
case située dans la direction du mouvement est à l'extérieur de l'échiquier on
a les cas suivants :
i) Pour Nord, Sud, Est, Ouest
P ne se déplace pas et on inverse la direction de son mouvement (comme le cas
précédent).
ii) Pour les autres directions on
utilise la correspondance suivante :
Si X-Y
est la direction (X-Y = Nord-Est, Sud-Est, Sud-Ouest ou Nord-Ouest)
- si les cases dans les directions X et Y sont occupées, P ne se déplace pas et
on inverse sont mouvement
- si seulement la case dans la direction X est occupée P se déplace dans la direction
Y et sa direction est maintenant
X-Y, où X est l'inverse de X.
- si seulement la case dans la direction Y est occupée alors P se déplace dans
la direction X et sa direction est
maintenant X-Y.
Donc par exemple si la direction est
Nord-Est on a soit
-pas de mouvement de P et direction devient Sud-Ouest si les cases dans les
directions Nord et Est sont occupées
-mouvement de P dans le sens Est et la direction devient Sud-Est si seulement
la case dans la direction Nord est occupée
- mouvement de P dans le sens Nord et la direction devient Nord-Ouest si
seulement la case dans la direction Est est occupée
Votre
programme prend en entrée (sur l'entrée standard) quatre lignes de la forme
N
DD X1 Y1
DD X2 Y2
Coup
où N est la dimension de
l'échiquier (entier positif)
DD sont deux caractères qui représentent la direction
initiale du mouvement de la première pièce, il s'agit de
NN pour Nord
SS pour Sud
EE pour Est
OO pour Ouest
NE pour Nord-Est
SE pour Sud-Est
SO pour Sud-Ouest
NO pour Nord-Ouest
X1 et Y2 sont les positions horizontale et verticale
de la case où la première pièce est située (deux entiers entre 1 et N)
X2 Y2 DD représente les mêmes données pour la seconde pièce.
Finalement Coup est un entier positif ou nul qui représente le nombre de coups à
jouer. Par exemple Coup = 1 veut dire que seule la première pièce est
jouée, Coup = 2 veut dire que d'abord la première et après la seconde pièce est
jouée.
Votre
programme doit calculer la position et la direction des deux pièces après Coup (nombre
de coups) et les afficher sur la
sortie standard
dans le format
DD X1 Y1
DD X2 Y2
Votre programme n'est pas
tenu de faire la validation des entrées.
3
EE 1 1
EE 3 3
4
EE 3 1
OO 2 3
6
SE 1 6
NO 6 1
10
NO 1 6
SE 6 1