Classes = f ( Cible )

Accueil Remonter

Ces tableaux indiquent les classes à utiliser en fonction de la cible de recherche et de l’option Optimisation du code. Lorsque le code est optimisé, les méthodes des classes "CcaseNB" ne contiennent pas de test sur les propriétés du contrôle. Ces tests ne sont pas nécessaires car il sont intégrés dans la position de la classe spécialisée dans l'arbre d'héritage dont la racine est "CcaseNB".

Dans ces tableaux la colonne target est un code utilisé par le programme. Carré indique la contrainte sur les lignes/colonnes de l'échiquier.

  • semi-magique signifie un échiquier ou chaque quart est un carré magique (130 pour chaque 1/2 ligne 1/2 colonne).

  • magique signifie une recherche de carré magique (260 pour chaque ligne et chaque colonne)

  • quelconque signifie aucune contrainte sur les lignes et les colonnes

Diagonale indique la contrainte sur les diagonales

  • semi-magique pour une recherche avec les 8 diagonales des 4 quarts valant 130

  • magique pour une recherche avec les 2 diagonales valant 260

  • quelconque signifie aucune contraintes sur les diagonales.

Selon le mode d'exécution (optimisé ou non) les cases exploitées ne sont pas les mêmes. L'algorithme optimisé est 2 fois plus rapide que l'algorithme standard.

Code optimisé 

Target

Carré

Diagonale

case banalisée

case sur la diagonale

SM_SD 15 

semi-magique

semi-magique

CcaseA1_MAGIC(*)

CcaseA1DP_MAGIC

SM_D  
7

semi-magique

magique

CcaseA1_MAGIC_MD

CcaseA1DP_SIMPLED_MAGIC

SM  
5

semi-magique

quelconque

CcaseA1_MAGIC

CcaseA1_MAGIC

M_SD (**) 11

magique

semi-magique

CcaseNB_MAGIC

 

M_D  
3

magique

magique

CcaseNB_MAGIC

CcaseDP_MAGIC_D

M  
1

magique

quelconque

CcaseNB_MAGIC

CcaseNB_MAGIC

SD  
10

quelconque

semi-magique

CcaseNB_NOMAGIC_SMD

CcaseA1DP_D

 
2

quelconque

magique

CcaseNB_NOMAGIC_MD

CcaseDP_D

QQ  
0

quelconque

quelconque

CcaseNB_NOMAGIC

CcaseNB_NOMAGIC

 

Code non optimisé 

Target

Carré

Diagonale

case banalisée

case sur la diagonale

NOQQ    
1

semi-magique

semi-magique

CcaseA1

CcaseA1

NOQQ
 

semi-magique

magique

CcaseA1

CcaseA1

NOQQ
 

semi-magique

quelconque

CcaseA1

CcaseA1

NOQQ
 

magique

semi-magique

CcaseA1

CcaseA1

NOQQ
 

magique

magique

CcaseA1

CcaseA1

NOQQ
 

magique

quelconque

CcaseA1

CcaseA1

NOQQ
 

quelconque

semi-magique

CcaseA1

CcaseA1

NOQQ
 

quelconque

magique

CcaseA1

CcaseA1

QQ
0

quelconque

quelconque

CcaseNB

CcaseNB

Le choix des cases  utilisées par l'algorithme est uniquement déterminé par l'ensemble des propriétés du contrôle. Lorsque le composant est intégré dans un programme compilé (C++), dans une page HTML ou dans un script VBA (visual basic pour application), les options du contrôle (ou propriétés du contrôle) sont accessibles à travers des API spécialisées. C'est le cas par exemple sur la page suivante. Il est possible de modifier une partie des options disponibles, en passant par JavaScript. 

(*) devrait être spécialisée pour permettre de vérifier, lorsque la case courante n’est pas sur une des 2 diagonales, que les valeurs des diagonales ne sont pas trop grandes.

(**) ce cas n’est pas implémenté