root/tags/lgt290/library/numberlist.lgt

Revision 2, 1.0 KB (checked in by pmoura, 7 years ago)

Initial revision

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1
2:- object(numberlist,
3    implements(numberlistp),
4    extends(list)).
5
6
7    :- info([
8        version is 1.0,
9        authors is 'Paulo Moura',
10        date is 2000/7/24,
11        comment is 'List of numbers predicates.']).
12
13
14    average([], 0).
15
16    average([N| Ns], Average) :-
17        average([N| Ns], 0, 0, Average).
18
19
20    average([], Length, Sum, Average) :-
21        Average is Sum / Length.
22
23    average([N| Ns], Lacc, Sacc, Average) :-
24        Lacc2 is Lacc + 1,
25        Sacc2 is Sacc + N,
26        average(Ns, Lacc2, Sacc2, Average).
27
28
29    min([N| Ns], Min) :-
30        min(Ns, N, Min).
31
32    min([], Min, Min).
33
34    min([N| Ns], Aux, Min) :-
35        N < Aux ->
36            min(Ns, N, Min)
37            ;
38            min(Ns, Aux, Min).
39
40
41    max([N| Ns], Max) :-
42        max(Ns, N, Max).
43
44    max([], Max, Max).
45
46    max([N| Ns], Aux, Max) :-
47        N > Aux ->
48            max(Ns, N, Max)
49            ;
50            max(Ns, Aux, Max).
51
52
53    sum(List, Sum) :-
54        sum(List, 0, Sum).
55
56
57    sum([], Sum, Sum).
58
59    sum([N| Ns], Acc, Sum) :-
60        Acc2 is Acc + N,
61        sum(Ns, Acc2, Sum).
62
63
64    valid(List) :-
65        nonvar(List),
66        \+ \+ valid2(List).
67
68
69    valid2([]).
70
71    valid2([Head| Tail]) :-
72        number(Head),
73        valid2(Tail).
74
75
76:- end_object.
Note: See TracBrowser for help on using the browser.