Frédéric BISSON d766f7e469 | 8 years ago | |
---|---|---|
.. | ||
gnieark | 9 years ago | |
moul@60193a2bce | 8 years ago | |
README.md | 9 years ago |
README.md
Générateur de grilles de Shikaku
Introduction
Nous sommes en 2025. La directrice de la Clinique du Séquoia, Aimée Surprise, doit faire face à l’ennui de ses seniors. Les abonnements aux différentes revues de jeux d’esprit plombent le budget de la clinique et ne parviennent pas à satisfaire une demande sans cesse croissante.
Aimée Surprise a donc décidé de faire produire en masse des grilles de Shikaku.
Le Shikaku
Le Shikaku est un casse-tête logique venant du Japon. Il se joue sur une grille de W×H cases.
Le but est de réaliser un générateur de grilles de Shikaku.
Format du fichier produit
Le générateur produit un fichier dont la structure est la suivante :
-
première ligne : définition de l’aire de jeu
- 'T' : magic char
- W : largeur de l’aire de jeu
- H : hauteur de l’aire de jeu
-
lignes suivantes : une ligne par aire
- S : superficie du bloc ( 2 <= S < W×H )
- X : abscisse du bloc ( 0 <= X < W )
- Y : ordonnée du bloc ( 0 <= Y < H )
Notes :
- La grille est divisée en plusieurs rectangles
- la grille doit être entièrement recouverte par les rectangles et deux rectangles ne peuvent pas se chevaucher (Somme des S = W×H)
- des nombres apparaissent sur la grille : chaque rectangle doit en contenir un et un seul qui indique l’aire du rectangle qui le contient
- 2 < W < 200, 2 < H < 200
- 2 <= Nombre de blocs <= W×H/3
Voici un exemple de fichier :
T 8 4 -> une grille de 8×4
6 7 0 -> un bloc de 6 aux coordonnées (7,0)
6 5 3 -> un bloc de 6 aux coordonnées (5,3)
12 2 1 -> un bloc de 12 aux coordonnées (2,1)
4 4 1 -> un bloc de 4 aux coordonnées (4,1)
4 3 3 -> un bloc de 4 aux coordonnées (3,3)
Cet exemple décrit la grille suivante :
+---+---+---+---+---+---+---+---+
| 6 |
+ + + + + + + + +
| 12 4 |
+ + + + + + + + +
| |
+ + + + + + + + +
| 4 6 |
+---+---+---+---+---+---+---+---+
La solution de cette grille est la suivante :
+---+---+---+---+---+---+---+---+
| | | 6 |
+ + + + + + + + +
| 12 |4 | |
+ + + + + +---+---+---+ -.
| | | | |
+---+---+---+---+ + + + + |
| 4 | |6 | |
+---+---+---+---+---+---+---+---+ +-- bloc
. |
`--------------+
Challenge
Écrire un programme générant des grilles de Shikaku en laissant l’utilisateur spécifier :
- la largeur de la grille voulue
- la hauteur de la grille voulue
- le nombre de blocs à créer sur la grille
Exemple d’appel du programme pour générer une grille de 8×4 contenant 5 blocs :
shikakugen 8 4 5
Bonus
Le premier challenge correspond au niveau 1.
Niveau 2
Écrire une version capable d’afficher une version humaine de la grille et du problème comme ci-dessous:
+---+---+---+---+---+
| | |
+---+---+---+---+---+
| | | |
+ + + +---+---+
| | | |
+---+---+---+---+---+
| | | |
+ + + + + +
| | | |
+---+---+---+---+---+
+---+---+---+---+---+
| 3 2 |
+ + + + + +
|2 4 2 |
+ + + + + +
| 2 |
+ + + + + +
| 4 2 |
+ + + + + +
| 4 |
+---+---+---+---+---+
Niveau 3
Écrire un solveur de grille de Shikaku dont l’entrée est le fichier
Niveau 4
Écrire un générateur de grilles qui ne soient pas uniquement des sous-divisions de rectangles.
Exemple d’une telle grille :
+---+---+---+---+
| | |
+---+---+---+ +
| | | |
+ + + + +
| | | |
+ +---+---+---+
| | |
+---+---+---+---+
Note : cela n’est possible qu’à partir de 5 blocs !