2011-02-15 5 views
1

je sais que nous pouvons ajouter des faits dynamiques au moment de l'exécution, signifierequête dans Prolog

fact1(+First,+Second).

je peux insérer à l'aide asserta. Mais je veux demander ce que je peux ajouter foncteur au moment de l'exécution signifie d'abord il n'y a qu'un seul fait comme fact1(first,second). mais l'utilisateur insère quelques faits à dire moment de l'exécution

fact2(first,second).
fact3(first,second).

Voici d'abord nous don Je ne sais pas combien de faits doivent être ajoutés. Dites que l'utilisateur donnera l'entrée comme 3 alors nous devons ajouter fact1, fact2 et fact3. Si l'utilisateur donne la valeur 4, nous devons ajouter quatre faits, à savoir fact1, fact2, fact3 et fact4.

Toutes les suggestions dans ce sens sont appréciées. Merci.

Répondre

3

Vous pouvez construire le fait d'affirmer en utilisant les prédicats atom_concat/3 et = ../2 va Voici un exemple qui utilise pour faire valoir un prédicat que vous avez besoin (un nom de base, un nombre et deux arguments):

assert_predicate(Name, N, Parm1, Parm2):- 
    atom_concat(Name, N, FactName), 
    Fact=..[FactName, Parm1, Parm2], 
    asserta(Fact). 

et vous l'utiliser avec quelque chose comme: assert_predicate (fait, 1, premier, deuxième)

+0

Merci beaucoup. – anilonwebs