jeudi 30 mars 2017

Prolog , return boolean from consecutive recursive checks

Hello everyone,

The following code does recursive checks. For each call , F gets a value of either 1 or 0 , due to a condition . I want my test_liars predicate return True if all checks had result 1 , and False if at least one call , set F's value to 0.

What test_liars actually does , is not something really eager to explain , but I can if asked.

test_liars should return True to Flag's argument, asked :

  test_liars(2,[3,2,1,4,2],[1,0,0,1,0],Flag)

given different list ,rather than [1,0,0,1,0], it must return False

   test_liars(_,[],_,_) .
   test_liars(N,[HF|TF],[HT|TT],Flag) :-
         (HT == 0 -> ( N >= HF -> F = 1 ; F = 0)
                   ;   ( N <  HF -> F = 1 ; F = 0)),
          test_liars(N,TF,TT,Flag),
          write(F),
          (F == 0 -> Flag = 'True' ; Flag = 'False').

Aucun commentaire:

Enregistrer un commentaire