parent
8aed9fcc3f
commit
087af4d4c0
@ -0,0 +1,107 @@
|
|||||||
|
# Recherche de carré
|
||||||
|
|
||||||
|
L'idée est de chercher le premier plus grand carré possible à faire dans un tableau de la forme :
|
||||||
|
```
|
||||||
|
o....o..........
|
||||||
|
...........o....
|
||||||
|
................
|
||||||
|
....o...........
|
||||||
|
..........o.....
|
||||||
|
................
|
||||||
|
....o...o.......
|
||||||
|
................
|
||||||
|
.............o..
|
||||||
|
```
|
||||||
|
|
||||||
|
les `o` sont des obstacles qui bloquent les carrés.
|
||||||
|
|
||||||
|
Pour la suite on notera une case du tableau comme `[ligne,colonne]` en partant du coin en haut à gauche et avec le premier indice à `0`.
|
||||||
|
|
||||||
|
On utilisera `x` pour indiquer le point étudié sur la représentation du tableau.
|
||||||
|
|
||||||
|
Pour définir un carré, un point de départ et une distance suffit. Exemple :
|
||||||
|
```
|
||||||
|
{
|
||||||
|
row:1,
|
||||||
|
col:6,
|
||||||
|
width:4
|
||||||
|
}
|
||||||
|
```
|
||||||
|
permet de définir le carré suivant (symbolisé avec des `#`) :
|
||||||
|
```
|
||||||
|
o....o..........
|
||||||
|
......####.o....
|
||||||
|
......####......
|
||||||
|
....o.####......
|
||||||
|
......####o.....
|
||||||
|
................
|
||||||
|
....o...o.......
|
||||||
|
................
|
||||||
|
.............o..
|
||||||
|
```
|
||||||
|
|
||||||
|
Le principe retenu est de partir d'un point et de chercher le plus grand carré possible à partir de point. On parcours ensuite le tableau en cherchant pour chaque point leplus grand carré possible et on ne garde que le premier plus grand trouvé.
|
||||||
|
|
||||||
|
|
||||||
|
Exemple pour le tableau précédent
|
||||||
|
* si on part de `[0,0]` on tombe sur un `o` donc le plus grand carré est de côté `0`.
|
||||||
|
* si on part de `[0,1]` on peut commencer à regarder la plus grande suite de `.` possible sur la ligne, puis sur la colonne.
|
||||||
|
|
||||||
|
```
|
||||||
|
ox-->o..........
|
||||||
|
.|.........o....
|
||||||
|
.|..............
|
||||||
|
.|..o...........
|
||||||
|
.|........o.....
|
||||||
|
.|..............
|
||||||
|
.|..o...o.......
|
||||||
|
.|..............
|
||||||
|
.v...........o..
|
||||||
|
```
|
||||||
|
La plus grande longeur est 4, la plus grande hauteur 9.
|
||||||
|
|
||||||
|
Le plus grand carré potentiel est donc de côté 4 (la plus petite des deux dimensions).
|
||||||
|
|
||||||
|
La dimension max est donc 1 + la dimension max de ce quon peut faire en descendant en diagonale dans le sous carré partant de `[1,2]`, de côté 3.
|
||||||
|
|
||||||
|
```
|
||||||
|
ox-->o..........
|
||||||
|
.|x->......o....
|
||||||
|
.||.............
|
||||||
|
.|v.o...........
|
||||||
|
.|........o.....
|
||||||
|
.|..............
|
||||||
|
.|..o...o.......
|
||||||
|
.|..............
|
||||||
|
.v...........o..
|
||||||
|
```
|
||||||
|
L'ensemble des deux dimensions est possible pour ce sous carré, donc la a dimension max est donc 1 + la dimension max de ce quon peut faire en descendant en diagonale dans le sous carré partant de `[2,3]`, de côté 2
|
||||||
|
```
|
||||||
|
ox-->o..........
|
||||||
|
.|x->......o....
|
||||||
|
.||x>...........
|
||||||
|
.|vvo...........
|
||||||
|
.|........o.....
|
||||||
|
.|..............
|
||||||
|
.|..o...o.......
|
||||||
|
.|..............
|
||||||
|
.v...........o..
|
||||||
|
```
|
||||||
|
L'ensemble des deux dimensions est possible pour ce sous carré, donc la a dimension max est donc 1 + la dimension max de ce quon peut faire en descendant en diagonale dans le sous carré partant de `[3,4]`, de côté 1
|
||||||
|
```
|
||||||
|
ox-->o..........
|
||||||
|
.|x->......o....
|
||||||
|
.||x>...........
|
||||||
|
.|vvo...........
|
||||||
|
.|........o.....
|
||||||
|
.|..............
|
||||||
|
.|..o...o.......
|
||||||
|
.|..............
|
||||||
|
.v...........o..
|
||||||
|
```
|
||||||
|
en `[3,4]` on tombe sur un `o` donc une taille de `0`.
|
||||||
|
* donc la meilleure dimension en `[2,3]` est 1 (la taille en `[3,4]`+1)
|
||||||
|
* donc la meilleure dimension en `[1,2]` est 2 (la taille en `[2,3]`+1)
|
||||||
|
* donc la meilleure dimension en `[0,1]` est 3 (la taille en `[1,2]`+1)
|
||||||
|
|
||||||
|
|
Loading…
Reference in new issue