Added Shikaku challenge

master
Zigazou 9 years ago
parent e7d95216ea
commit 36c440c3a2

@ -0,0 +1,153 @@
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 !
Loading…
Cancel
Save