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.
Frédéric BISSON d766f7e469 Updated submodules 8 years ago
..
gnieark orthographe et commentaires 9 years ago
moul@60193a2bce Updated submodules 8 years ago
README.md Added Shikaku challenge 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 à 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 !