2013-12-22 42 views

回答

0

假設,這不是功課,在這種情況下,我不希望是在犯罪的合作伙伴,會說,下面的代碼是免費的使用任何人比欺騙你的功課以外的任何目的:-)

atoms_and_integers(L) :- 
    atoms_and_integers_aux(L, Atoms, Integers), 
    writeln(['Atoms: ', Atoms]), 
    writeln(['Integers: ', Integers]). 

atoms_and_integers_aux([], 0, 0). 
atoms_and_integers_aux([H|T], Atoms, Integers) :- 
    atom(H), !, 
    atoms_and_integers_aux(T, AtomsT, Integers), 
    Atoms is AtomsT + 1.  
atoms_and_integers_aux([H|T], Atoms, Integers) :- 
    integer(H), !, 
    atoms_and_integers_aux(T, Atoms, IntegersT), 
    Integers is IntegersT + 1.  
atoms_and_integers_aux([_H|T], Atoms, Integers) :- 
    atoms_and_integers_aux(T, Atoms, Integers). 
1

我知道這將是你的任務幫助不大,但我庫的粉絲(aggregate)!

atoms_and_integers(L, NAs, NIs) :- 
    aggregate(count, E^(member(E, L), atom(E)), NAs), 
    aggregate(count, E^(member(E, L), integer(E)), NIs). 
+1

(+1)我對CapelliC的'aggregate/3'的瞭解比任何人都多。 :) – lurker