-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathesercizio14.pl
45 lines (43 loc) · 1.17 KB
/
esercizio14.pl
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
% ------------------
% ** ESERCIZIO 14 **
% ------------------
% Scrivere un predicato PROLOG conta/0 che:
% - permetta l'introduzione da tastiera di una successione di numeri naturali terminata da uno 0
% < r1, r2, ..., rn, 0 >
% - stampi il numero di volte che compare l'ultimo elemento (escluso lo 0) se questo e' minore di
% 10, o il suo primo antecedente minore di 10 se questo è maggiore di 10; qualora non se ne trovi
% nessuno minore di 10 se ne stampi opportuna dicitura.
%
% ?- conta.
% Inserisci numeri (0 per terminare):
% 8.
% 1.
% 8.
% 14.
% 0.
% Ci sono 2 elementi uguali a 8
%
% ?- conta.
% Inserisci numeri (0 per terminare):
% 14.
% 19.
% 0.
% Nessun elemento < 10
conta :-
write('Inserisci numeri (0 per terminare):'),
leggi_lista(Lista),
exclude(<(10), Lista, LL),
( dif(LL, []) ->
last(LL, N),
exclude(dif(N), LL, LN),
length(LN, E),
write('Ci sono '), write(E), write(' elementi uguali a '), write(N)
;
write('Nessun elemento < 10')
).
leggi_lista([N|Lista]):-
read(N),
\+ N = 0,
leggi_lista(Lista),
!.
leggi_lista([]).