File: numberlist.lgt

package info (click to toggle)
yap 5.1.1-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 16,124 kB
  • ctags: 14,650
  • sloc: ansic: 122,796; perl: 22,545; sh: 3,768; java: 1,277; makefile: 1,191; xml: 739; tcl: 624; lisp: 142; awk: 9
file content (76 lines) | stat: -rw-r--r-- 1,047 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

:- object(numberlist,
	implements(numberlistp),
	extends(list)).


	:- info([
		version is 1.0,
		author is 'Paulo Moura',
		date is 2000/7/24,
		comment is 'List of numbers predicates.']).


	average([], 0).

	average([N| Ns], Average) :-
		average([N| Ns], 0, 0, Average).


	average([], Length, Sum, Average) :-
		Average is Sum / Length.

	average([N| Ns], Lacc, Sacc, Average) :-
		Lacc2 is Lacc + 1,
		Sacc2 is Sacc + N,
		average(Ns, Lacc2, Sacc2, Average).


	min([N| Ns], Min) :-
		min(Ns, N, Min).

	min([], Min, Min).

	min([N| Ns], Aux, Min) :-
		N < Aux ->
			min(Ns, N, Min)
			;
			min(Ns, Aux, Min).


	max([N| Ns], Max) :-
		max(Ns, N, Max).

	max([], Max, Max).

	max([N| Ns], Aux, Max) :-
		N > Aux ->
			max(Ns, N, Max)
			;
			max(Ns, Aux, Max).


	sum(List, Sum) :-
		sum(List, 0, Sum).


	sum([], Sum, Sum).

	sum([N| Ns], Acc, Sum) :-
		Acc2 is Acc + N,
		sum(Ns, Acc2, Sum).


	valid(List) :-
		nonvar(List),
		\+ \+ valid2(List).


	valid2([]).

	valid2([Head| Tail]) :-
		number(Head),
		valid2(Tail).


:- end_object.