You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

154 lines
4.2 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 à lennui de ses seniors. Les abonnements aux différentes revues
de jeux desprit 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 laire de jeu
- 'T' : magic char
- W : largeur de laire de jeu
- H : hauteur de laire 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 laire 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 lutilisateur
spécifier :
- la largeur de la grille voulue
- la hauteur de la grille voulue
- le nombre de blocs à créer sur la grille
Exemple dappel 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 dafficher 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 lentrée est le fichier
### Niveau 4 ###
Écrire un générateur de grilles qui ne soient pas uniquement des sous-divisions
de rectangles.
Exemple dune telle grille :
+---+---+---+---+
| | |
+---+---+---+ +
| | | |
+ + + + +
| | | |
+ +---+---+---+
| | |
+---+---+---+---+
Note : cela nest possible quà partir de 5 blocs !