Présentation de Sunflowers
Sunflowers est un jeu de logique qui propose des grilles de difficulté variable. Le jeu utilise un moteur de logique pour générer des grilles et évaluer leur difficulté.
Fonctionnement du moteur de logique
Le moteur de logique de Sunflowers utilise cinq techniques de raisonnement pour résoudre les grilles : Basic, Subset, Overlap, What-if et Either-way. Chaque technique correspond à un niveau de difficulté différent.
Le niveau Basic correspond à des grilles où une seule clue suffit pour déterminer les cases vides ou remplies. Le niveau Subset correspond à des grilles où deux clues sont comparées pour déterminer les cases vides ou remplies. Le niveau Overlap correspond à des grilles où deux clues partagent des cases et où les limites minimales et maximales de cases partagées déterminent les cases vides ou remplies.
Le niveau What-if correspond à des grilles où l'on suppose qu'une case est vide ou remplie et où l'on suit les règles du jeu pour voir si une clue est violée. Le niveau Either-way correspond à des grilles où l'on suppose qu'une case est vide ou remplie et où l'on suit les règles du jeu pour voir si les deux hypothèses aboutissent à la même conclusion.
Difficulté et estimation du temps de résolution
La difficulté d'une grille est évaluée en fonction des techniques de raisonnement utilisées pour la résoudre. Le score de difficulté varie de 0 à 100 et est positionné dans une bande de difficulté spécifique (Easy, Medium, Hard, Extreme, Insane).
L'estimation du temps de résolution est basée sur le nombre de cases, le nombre de déductions de base, le nombre de déductions de subset, le nombre de déductions d'overlap et le nombre de déductions de what-if. Les poids utilisés pour l'estimation du temps de résolution sont stockés dans la variable EST_TIME.
EST_TIME = { 'basic': 2, 'subset': 14, 'overlap': 26, 'what-if': 15, 'either-way': 35 }
Les grilles peuvent contenir des cases vides (0) qui suivent des règles spécifiques (ZERO_CLUE_RULES). Le générateur de grilles protège les cases vides nécessaires pendant la suppression des cases inutiles et injecte une case vide si nécessaire.