public void Solve() { // On fait une copie des règle existantes // + création d'une base de faits vierge bool moreRules = true; RulesBase usableRules = new RulesBase(); usableRules.Rules = new List <Rule>(rDB.Rules); fDB.Clear(); // Tant qu'il existe des règles à appliquer while (moreRules) { // Cherche une règle à appeler Tuple <Rule, int> t = FindUsableRule(usableRules); if (t != null) { // Applique la règle et ajoute le nouveau fait // à la base IFact newFact = t.Item1.Conclusion; newFact.SetLevel(t.Item2 + 1); fDB.AddFact(newFact); // Enlève la règle des règles applicables usableRules.Remove(t.Item1); } else { // PLus de règles possible : on s'arrête moreRules = false; } } // Ecriture du résultat ihm.PrintFacts(fDB.Facts); }
public void Solve() { // Se realiza una copia de las reglas existentes // + creación de una base de hechos vacía bool moreRules = true; RulesBase usableRules = new RulesBase(); usableRules.Rules = new List <Rule>(rDB.Rules); fDB.Clear(); // Mientras existan reglas para aplicar while (moreRules) { //Busca una regla para aplicar Tuple <Rule, int> t = FindUsableRule(usableRules); if (t != null) { // Aplica la regla y agrega el nuevo hecho // a la base IFact newFact = t.Item1.Conclusion; newFact.SetLevel(t.Item2 + 1); fDB.AddFact(newFact); // Elimina la regla de las reglas aplicables usableRules.Remove(t.Item1); } else { // Si no hay más reglas posibles: se detiene moreRules = false; } } // Esclibe el resultado ihm.PrintFacts(fDB.Facts); }